QuickROM Synopsis: remaps Kickstart to FAST RAM, using 68060 or 68040 MMU $VER: QuickROM v36.08 (21-May-1998) by Simon N Goodwin This makes operating system code much faster by making a copy of Kickstart - the built-in part of the Amiga's operating system - in fast memory. It does this dynamically and can be activated or deactivated at any time. HISTORY Version 36.07: first Aminet release. Thanks to the following users for their comments: Dave Wright Gary Goldberg Ingo Musquinier Guillaume Ubbelohde <950947@mercure.umh.ac.be> Michael Lewis Frank Papaeliou Daryl Holley Feedback of any kind is much appreciated, and helps to ensure the development and updating of QuickROM. Version 37.08 second Aminet release. New version added for use from a Workbench icon or WBStartup. Documentation improved to indicate installation options. INSTALLATION There is no need to install QuickROM in your startup because it can be run at almost any time. However experience has shown that many users want the speed benefit as soon as they turn on their Amiga, or soon thereafter, so they choose to include it in their startup. You can add QuickROM to your startup in three places: (1) User-Startup - this is the conventional place to put such a system extension. Simply put the QuickROM program in the C: directory on your boot disk, and add the command: C:QuickROM anywhere in the file S:User-Startup. The advantage of having it at the start is that it speeds up subsequent execution of commands in your startup sequence. The disadvantage is that you lose 516K of memory (which can be reclaimed) early on. (2) WBStartup - simply drag the icon named QuickROM_WB into the WBStartup drawer on your boot disk, and QuickROM will run automatically. (3) Startup-Sequence - strictly speaking Amiga users should not modify any of the contents of S:Startup-Sequence - the file S:User-Startup was introduced with Workbench 2.0 to reduce the problems often caused by a messed up startup-sequence. But some programs - like Shapeshifter, Fusion or OxyPatcher - require you to add commands to Startup-Sequence, and you may want to include QuickROM in that file so that it speeds up all subsequent startup commands in that file, as well as those in User-Startup and WBStartup, which run later. It is assumed that you have copied the command to If you decide to ignore the advice of Commodore and alter your startup-sequence, the QuickROM command should be added after the line starting with the SetPatch command. There is little point in putting it before commands that restart the system (OpenOxyPort, RsrvWarm, PrepareEmul etc) as it will have to be done again at every reset and will not be loaded for long enough to make a significant difference, the first few times. This startup-sequence has been successfully used to set up Fusion, OxyPatcher, QuickROM and Quantum on an A4000/060: RsrvCold -e >NIL: ; For Fusion c:openoxypport ; For OxyPatcher SetPatch QUIET C:QuickROM QUANTUM 1 >NIL: The rest of the normal startup-sequence follows hereafter. REMOVAL Whatever way you start QuickROM, you can stop it (or start it again) by issuing another QuickROM command from a shell, Arexx or Directory Opus (etc), clicking on the QuickROM_WB icon, or rebooting the system. COMPATIBILITY QuickROM was written and tested on a Mark 2 Cyberstorm 68060, more than doubling the speed of access to Kickstart code. It has also been tested on GVP's G-FORCE 68060 (A2000, A3000 or A4000 versions), Commodore's 3640 A4000/040 card (where it helps a bit, but hampered by its very slow 'fast' RAM interface) MacroSystem's Warp Engine 68040/33 and a Cyberstorm Mark 1, which is even faster than the Mark 2. Nic Wilson's KickSpeed tester (from Set040) reads ROM 2.4 times faster on Mark 1 Cyberstorm hardware after running QuickROM. The advantage is almost as great on Mark 2, and can be even more on a Mark 3 (PPC or 060), Warp Engine or GVP accelerator. For the most advantage - up to 30 times or more in some cofigurations - run it on a 16 bit Amiga (e.g. A2000) with a Zorro-based 68040 or 68060 accelerator. The relocation will also boost the speed of access to chip RAM, custom chips and other Zorro cards in this case, as it eliminates many potentially contentious accesses to slow 16 bit motherboard resources - eliminating 16 bit ROM accesses leaves more time for everything else in the 24 bit address space. If you try it on any system not listed above, or encounter any results which you do not expect after reading this documentation, please contact the author with details by email: simon@studio.woden.com COMPARISONS QuickROM is not the first such program - it follows in the path of the shareware Set040, written before Amiga OS made use of the MMU, and Commodore's developer-only MAPROM (which uses special mapping hardware) and later commercially-bundled commands like KSREMAP, WARPKICK and ROM2FAST, but it is free, concise, more compatible and has features which some others lack. ADVANTAGES The advantages of QuickROM over the proprietary versions are: * Freely distributable, with full assembly language source code and copious comments explaining its strengths and weaknesses. * Allocates RAM from the top of memory to minimise fragmentation. * Allows de-allocation as well as allocation, freeing 516K memory. * Full diagnostic Exec result codes for cases when it can't work. * Does not use undocumented 68060.library hooks, so it should work fine on any other 68060 or 68040 system with an MMU, unlike some. * Works with 1 Mb ROMs as well as Commodore 512K ones, and uses the documented method to find the ROM size, so it should suit other sizes too, as long as they're in the first 32 Mb of address space (likely as the MAGIC_ROM_SIZE needs to be at address 16 Mb - 20). LIMITATIONS * Requires an MMU, and won't work with old 68030, 68451 or 68851 ones. There are already plenty of Kickstart re-mappers for those systems. * May get confused in the MMU table setup or ROM location is radically changed in some future Amiga. This program is inevitably architecture- and processor-specific, although I've tried to make it fairly flexible. * No messages. Check the return code to find out EXACTLY what happened. * Only remaps the current Kickstart - no provision to change to another version (e.g. a developer Kickstart on disk). This is deliberate, as (1) changing Kickstart on a running system would require a reset and QuickROM is designed to let you turn it on or off at any time while the system continues to work normally (2) as a former Certified Amiga developer, the author does not condone or encourage the theft of test versions of the Kickstart software. ERROR CODES Type SET after the QuickROM command to see the return code (RC). 0 indicates success. Other values indicate failure and the reason why. 20 indicates that Kickstart has already been remapped by some other program. QuickROM takes no action in this case, or others below. 22 signifies that there is not enough fast memory in one piece for the ROM image and associated data. QuickROM requires a contiguous 516K. 24 indicates that the MMU is using 8K pages. QuickROM expects 4K pages, for compatibility with Setpatch, Enforcer, Cyberguard and other MMU programs. The source file includes untested code for 8K page support. 26 indicates that the MMU is not enabled. This may mean that it is not available in silicon (e.g. on an EC040 or EC060 processor. These configurations have not been supplied as standard in any Amiga to date, but they do work (without the MMU_) fr instance I've got a C= 3640 with an EC040 on it, having moved the original XC040 to a Warp Engine. 28 indicates that the MMU has not been initialised. Normally this is a function of SetPatch (except early versions) in conjunction with the 68040 or 68060 library. Enforcer also sets up MMU tables if they do not already exist. 30 indicates that the processor is too old, i.e. not a 68040 or 68060!