MuLib:
Author: Thomas 'Thor' Richter.
Requirements: 68010, 68020, 68030, 68040 or 68060 processor.P>
Available From: Aminet.
Comments: If you want a fast OS legal. reliable and stable Amiga as well as compatibility, this is the best collection of tools you are likely to find !
About:
All "modern" Amiga's come with a special hardware component (referred to as the MMU or Memory Management Unit). Most accelerator cards such as 68030's have these as a separate unit. On 68040 or 68060 systems the MMU is incorporated into the processor itself. The MMU carries out the "actual" calculation and the surrounding hardware for Memory and IO (input / output devices). All external access of the CPU are actually filtered by the MMU, checked whether the region of memory is still available, can be write protected to prevent the area of memory from being over written, can be used to hold the internal CPU cache and much more. The MMU can also be told to translate the address as seen from the CPU to different addresses, and hence it can be used to "remap" parts of memory without actually touching the memory itself.
Unfortunately, AmigaOS is a bad kludge and does not provide any interface of this type to the MMU: everything boils down to hardware hacking and every program "hacks' the MMU table as it wishes, and hence compatibility problems arise: program A does not work nicely with program B, Enforcer (the debugging tool) with FastROM (Kickstart ROM Remapper) or the virtual memory tool VMM, and other such combinations of these programs have been impossible until now. Not only does MuLib provide a significant performance boost to your Amiga, but now the MMU can also be told to translate the memory addresses as seen from the CPU to different addresses.
The MuLib package is quite comprehensive and includes an assortment of new 68k libraries for your accelerator card. Prior to installation, the S: LIBS: C: DEVS: and prefs drawers are backed up into a drawer called 'Old' on your System partition to prevent anything from being overwritten (should you encounter problems you can safely uninstall the package without any problem).
How The Elements of the package are installed:
1) Upon installation, MuLib copies a number of its programs to your C: path.
2) Thor's "new' 68030.library also copied to your LIBS: path (should you own a 68030 type accelerator). On 68040 systems, 68040.library, 680x0.library and is copied to your LIBS: path by the assign and for 68060 systems 68060.library, 680x0.library and 68040.library are copied to LIBS:
3) mmu.library is copied to LIBS:
4) A drawer called "MMU" is made in your LIBS: path and a file called "MMU-Configuration" is created here. This is simply a configuration file. Luckily, the installer performs the task of examining your hardware and creates this file automatically, so you need not worry about building your own one from scratch.
5) Finally, 'Setpatch' needs to be informed to load the appropriate libraries 68x.libraries on bootup. You have two options here. You can use the SAS patches in the MuLib for applying this, or alternatively, you can use a filezapper such as AZap, NewZap or DPU to edit the Setpatch executable directly the libraries are loaded on bootup. The choice is yours.
I would recommend once you have the MuLib package installed to also install the following:-
1) MuFastROM: This is a mmu.library conforming vector table, execbase and supervisor stack remapper. It creates a mirror image of the vector table of the MC68K CPU in fast RAM, thus, speeding up all interrupts in a *VERY* compatible way. Additionally, if MuMoe4k is run as well, it will also remap important system libraries to fast-ram in case no auto-configuring RAM is available to the system. This also helps to boost performance. MuMove4k *MUST* be started in the first line of your S:Startup-Sequence file, whereas MuFastROM should be started after Setpatch:-
I use the line: C:MuFastZero On MoveSSP StackSize 65536 after the Setpatch line of my startup-sequence. The 'ON' switch enables ROM remapping. The MoveSSP switch remaps the supervision stack to fast-memory and helps to boost performance even more on my 68060 system. The old supervisor stack is NOT released, hence this should only be used once or your will end up wasting memory. The 'stack' switch allows you to also set the size of the supersor stack in bytes if MOVESSP is used. The default stack you can find out by typing "Stack" from an AmigaDOS shell. I have however used a value of 65536 just to be safe and to give other programs plenty of breathing space.
Once these steps have been performed, you then have the MuLib package installed, and should by now have noticed an increased performance boost and a stable system. That concludes the installation of the MuLib package. There are further programs in the package in which one can use to boost performance further. Should you wish to install these they are provided in the package. I provide you with a copy of my S:Startup-Sequence S:User-Startup file so you can see how the MuLib package is initialized on bootup on my system which is running AmigaOS 3.9. I have numbered the lines (for your connivance) so I can refer to them:-
Customized 3.9 Startup Sequence:-
$VER: AmigaOS Startup-Sequence 45.8 (3.10.2001)
; Startup-Sequence for AmigaOS 3.9/EX XC68060/AA1 Based System.
1) C:LoadModule L:FileSystem.resource L:ram-handler
Devs:console.device Libs:Workbench.library Libs:Icon.Library
L:FastFileSystem NOMEMFKICK HEADERFORWARDS NOREBOOT
2) C:MuMove4k
3) C:CMQ060
4) C:IDEFix
5) C:Setpatch Quiet
6) C:PatchRAM
7) C:MuFastZero On MoveSSP StackSize 65536
8) C:MuProtectModules ON
9) C:SaferPatches Install >NIL:
10) C:PoolMem Install ScratchOnly >NIL:
11) ;C:MuRedox
12) C:TrueMultiAssigns
13) C:Env-Handler
14) C:Version >NIL:
15) C:AddBuffers >NIL: DF0: 27
16) FailAt 21
17) C:MakeDir RAM:T RAM:Clipboards
18) Resident >NIL: C:Assign PURE
19) Resident >NIL: C:Execute PURE
20) Assign >NIL: T: RAM:T
21) Assign >NIL: CLIPS: RAM:Clipboards
... rest of standard startup-sequence.
Description of my startup-sequence:-
Line 1:
AmigaOS 3.9 normally initializes Setpatch, loads the appropriate 68x libraries on bootup, initilizes NSDPatch to patch broken device drivers and add assigned 64 bit functionality to the old ones, and then reads the AmigaOS ROM Update In order to do this, the computer 'resets' to apply these patches. It is a kludge and this reset method *DOES NOT* work with some third party buffered interfaces at all (the computer will just go into endless reboots). A far cleaner and better method is to extract the elements from the AmigaOS ROM Update file and to apply them using LoadModule. This way, the computer no longer needs to reset to apply them ! I used the program 'RomUpdateSplit' (included in the Blizzkick package to extract the new console.device L:FastFileSystem and Resource.handler from the AmigaOS Update (in DEVS) under OS 3.9. The extracted files from the AmigaOS ROM Update file you should then copy to L: and DEVS respectively overwritting the old versions. You will notice LoadModule now loads these on bootup and are locked into Fast Memory. Once you have done this, you can delete the AmigaOS ROM Update in DEVS: (otherwise they will be initialized again and turned off) !.
Line 2:
This reads MuForce4k. As I have previously mentioned, the MuForce4k is included in the MuLib package is a memory preparation tool for the MuFastZero and for Shapeshifter Macintosh emulator for Amiga.
Line 3:
CMQ060 - This is a CopyMemQuick patch to speed performance on '060 systems. If you use MCP's CopyMemQuick instead, I suggest you chuck it in the bin as it doesn't offer much of a performance boost. Use CMQ060 instead (get it off of Aminet !).
Line 4:
IDEFix - Enables secondary IDE channel of my buffered interface card.
Line 5:
Version 44.17 of OS 3.9's Setpatch command. This applies various ROM fixes, and also initializes Thor's 68060.library and mmu.library on bootup (Setpatch was filezapped with DPU) to load the news libraries on bootup.
Line 6:
This reads 'PatchRAM'. This program is included as part of the MuLib package and again is by the same author. It patches OS 3.9's RAM disk to always display the correct size !
Line 8:
This reads 'MuProtectModules ON'. This locks the patches applied by LoadModule these into Fast-Memory and thus, prevents them from being overwritten in memory.
Line 9:
You can happily throw MCP's 'PatchControl' program in the bin now, as it is bug ridden (causes problems with Cybergraphix 3/4). Use Thomas Richter's SaferPatches instead, which is much more system friendly. SaferPatches even has the ability to autodetect if there are conflict between patches OS functions and warns the user accordingly. It also comes with ShowPatch program, which enables the user to remove OS patches in a system legal way.
Line 10:
This initializes Poolmem. This program is also by Thomas (the guy responsible for coding the MuLib package). It performs automatic memory flushing.
Line 11:
MuRedox is an OxyPatcher replacement. It boosts FPU performance with programs which use the math co-processor of your accelerator card such as Vista, Imagine and Lightwave et al. I have commented this out for the time being. This is a hack, but a nice hack nonetheless, and unlike Oxypatcher isn't riddled with so many bugs.
Line 13:
Env-Handler. This is for use with OS 3.9. It purpose is to stop all the stuff from RAM:Env-Archive being copied to RAM:ENV and wasting precious memory. Programmed by Stephan Rupprect (get this from Stephan's homepage or from Aminet).