QuickROM Synopsis: remaps Kickstart to FAST RAM, using 68060 or 68040 MMU $VER: QuickROM v36.07 (3-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. 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. 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!