ZKick V2.30 -- Copyright (C) 1990 by Daniel Zenchelsky This program may be freely copied, as long as all copyright notices are left intact and unchanged. ----------------------------------------------------------------------------- Overview -------- ZKick is a KickStart 2.0 kickfile loader, similar to KickIt by Bryce Nesbitt, but with several advantages. First of all, ZKick will work in ANY Amiga with a ram board at $200000, no matter which slot it's in. Second, when ZKick loads KickStart, it survives a reboot! When you hit CTRL-AMIGA-AMIGA, you are placed back in KickStart 2.0. This feature can be disabled with the "-die" option. NOTE: ZKick is only useful for developers who have an Amiga 500/2000 kickfile from Commodore. It will NOT work with a 3000 KickStart file. Theory of operation ------------------- ZKick works by building a table of expansion devices under KickStart 1.3 (1.2), adding a ROMTag to the resident list, patching ColdCapture and CoolCapture, loading KickStart 2.0 into memory at $200000 and reseting the machine. When 1.3 starts up, the ColdCapture routine skips the >512k chip ram test normally done by exec. Normally exec clears all of chip ram if it finds more than 512k of it. Then, the ColdCapture routine patches exec to keep it from stomping on the first few bytes of memory at $200000. Expansion library (still under 1.3) then configures all of the AutoConfig devices. Next, our ROMTag is executed, which detects that it is still under 1.3 and jumps to the start of KickStart 2.0. Now we're running under KickStart 2.0. Expansion library is the first thing executed, but it doesn't find any expansion devices because they were all configured by the 1.3 expansion library. Then the ROMTag is again executed. It adds all of the expansion devices previously configured by 1.3 expansion library to the 2.0 expansion library's ConfigDev list, and all of the memory boards to exec's memory list. From here on the normal startup is taken, during which each board is initialized. Requirements ------------ 1) Total memory must be 1.5M or greater. 2) There must be a 512k or greater ram board at location $200000. Usage ----- ZKick [options] kickfile Options ------- The -debug option will let you see all kinds of debugging information. The -print option will cause ZKick to dump more debugging information to the printer. The -die option is used to tell ZKick not to survive reboots, so that when the machine is reset, the KickStart ROM will be run instead. The -mmu option will cause ZKick to reset the MMU, if it exists. *NOTE* This is different than the previous versions. The -noreset option causes ZKick to skip the initial RESET and just jump into KickStart. This option is useful with some GVP boards which do not pass the RESET signal properly. The -nochecksum option will keep ZKick from going to 1.3 if the KickStart checksum is not valid. (Using the options -noreset and -nochecksum together will make ZKick behave as it did in version 2.01) KillZKick --------- Also included is the program KillZKick. KillZKick removes ZKick from memory, and reboots the system with the KickStart ROM. Troubleshooting --------------- If you can't get ZKick to work, make sure you're using a 500/2000 version of KickStart, version 36.141 (Release 2.0) or higher. Try the following things before contacting me: 1) Try using "ZKick -noreset Kickfile" If this fails, set up your printer correctly and use the command "ZKick -debug -print Kickfile." Mail me a copy of the output along with a COMPLETE description of your hardware configuration, and hopefully I'll be able to determine the problem. Reaching me ----------- I can be reached on Bix as dzenc, on the internet as dzenc@gnu.ai.mit.edu, or on bitnet as dzenc%gnu.ai.mit.edu@mitvma.bitnet. Special thanks to ----------------- Dan Babcock for sending me an excellent article that he wrote which showed how to set up RomTag modules correctly, as well as his many ideas for bug fixes and improvements. Dave Haynie, for the MMU code which I pilfered from SetCPU. And my beta testers: Martin Allred Joanne Dow Frank Edwards Valentin Pepelea Erik Quackenbush (even though his flakey hardware caused most of the problems :-) Mike Thomas Apologies to anyone I missed. History ------- ZKick 2.30 does a version check in its ColdCapture and CoolCapture routines. Before, it relied on the fact that they only were executed under 1.2/1.3. ZKick 2.24 hopefully fixes the mmu code! Now it should properly clear the mmu IF you use the "-mmu" option. Thanks to Christian Schneider for picking up my silly error. ZKick 2.23 adds support for delayed GURUs. Normally, exec pokes a "HELP" into location 0, stores the GURU info at $0100, and restarts the machine. When exec is restarted, it checks location zero for "HELP," stores the GURU info in ExecBase, and clears location 0. Later, exec pops up an alert. The problem is that ZKick starts KickStart 2.0 before exec gets a chance to display the alert. ZKick now checks for a delayed GURU and pokes "HELP" back into location 0 before starting KickStart 2.0. ZKick 2.22 changes the default behavior to NOT reseting the mmu, as many people said that they couldn't get it to work on 020/030 machines unless this option was off. ZKick 2.21 adds the "-print" option. ZKick 2.20 adds many new command line options. ZKick 2.10b fixes a problem which caused ZKick to configure each device twice. ZKick 2.10a fixes a typo in Zkick 2.10, which caused it not to recognize an MMU ('=' instead of '=='). ZKick 2.10 employs better error checking. In addition, if an MMU exists, it clears it before starting 2.0. ZKick 2.01 fixes a bug which caused ZKick not to work with most autoboot controllers. ZKick 2.0 is the first "public" release. -Dan ----------------------- P.S. This is my first attempt at assembler programming on the 68000. I hope you enjoy the results!!! P.P.S. I'm a college sophomore looking for some part time programming work.