hamilton@uiucuxc.CSO.UIUC.EDU (10/01/86)
if you've been wanting to kickstart and bootstrap from the SAME disk, or kick from df0: and boot from df1:, rejoice: a resourceful hacker (alonzo gariepy) has accomplished the feat and posted his technique. if there's no objection to a uuencoded .arc file in mod.amiga.binaries, i'll forward the file there. if you're in a hurry, you can get it from the commodore/amiga section on PeopleLink. it'll probably show up on other services and BBS's very soon. alonzo's distribution comes complete with a batch script that will do all the work for you to create a "kickbench" disk; you only have to finish the job by deciding what you want copied to it from your workbench. one caveat: you will need a copy of DiskEd from the developers' disks and probably "diskchange" from 1.2 beta. i presume it's improper to post DiskEd, even tho anyone who really wants it can get it. perhaps c-a could bless its distribution? here's how it works (as much as i've figured out). 1) diskcopy a kickstart disk to a new disk. 2) patch the "strap" code in the kickstart to jump around the test for 'DOS\0' at the beginning of sector 0. this is the test which leads to the pictorial prompt for a workbench disk -- ie, this is Exec, not AmigaDos. 3) place a modified dos bootstrap in sector 0. the change has the effect of writing 'DOS\0' into longword 0 of sector 0 before AmigaDos goes looking for it. this is delightfully easy to do. one of the address registers during boot points at the disk i/o request used to read the boot block(s). it suffices to modify the longword at *(io_Data), modify io_Command, and DoIO(). about 18 bytes of additional code. the original boot was only about 38 bytes to begin with. sector 1 remains the first block of kickstart, instead of being the continuation of the boot. 4) build an AmigaDos filesystem on the unused portion of the kickstart copy. tie up the blocks occupied by kickstart in a pseudofile so AmigaDos will not try to allocate them. 5) copy the contents of the major sys: directories (c, l, s, libs, devs, fonts, etc) according to taste. now, to make this disk kick'able, write 'KICK' into longword 0 of sector 0 (alonzo provides an executable that does this). cycle power and insert this disk. kickstart ram will load, and dos will boot as normal. once dos is up, your kickbench disk IS a workbench disk, and no longer capable of kick'ing. to "re-arm" it, 'KICK' must be re-written. you can do this right away (in startup-sequence, even), but if you should need to remove this disk (for a diskcopy, say), you must temporarily disarm, restoring the 'DOS\0' sentinel, or dos will not re-validate the disk when it is re-inserted (the same executable will do this too). as long as you rearm before shutting off (or losing) power, you're set. i have plenty of ram, so my startup-sequence copies and assign's the important directories to ram: and re-arms the kickbench disk, which i can remove until the next power-up. when i'm in frequent-crash mode, i use a conventional workbench disk for warm-starts. the kickstart code occupies 256Kb, which still leaves room for a reasonably complete AmigaDos sys:. if it's not enough for you, you can use the kickbench only long enough to transfer to a second, more complete, disk in your external drive. this is equivalent to kick'ing from df0: and booting from df1:. wayne hamilton U of Il and US Army Corps of Engineers CERL UUCP: {ihnp4,pur-ee,convex}!uiucdcs!uiucuxc!hamilton ARPA: hamilton%uiucuxc@a.cs.uiuc.edu USMail: Box 476, Urbana, IL 61801 CSNET: hamilton%uiucuxc@uiuc.csnet Phone: (217)333-8703 CIS: [73047,544] PLink: w hamilton
dillon@CORY (Matt Dillon) (10/02/86)
Yup, that sounds like a hacker's hack to me. I dunno, but wouldn't it be easier to modify the code in DOS checking between 'KICK' and 'DOS '?? The two checks are probably together (maybe in case), and I doubt very much you would have to actually *add* any code .. just rip it up a little so it falls through (you know, turn a branch into a NOP, etc...). In anycase, you wouldn't then need to do any diskwriting whatsoever once you've got the mod'd kickstart. (The end result would be that DOS would write 'DOS ' in memory whether the disk in the drive is 'KICK' or 'DOS '.) I'll take a crack at it, but don't guarentee results as I am very loaded down with school work right now. Now, where did that 68K disassembler go .... ---------------------- REQUIRED FOR 1.2 release (PRETTY PLEASE??): It can't be all that difficult to have the workbench boot check DF1: as well as DF0:, and would solve many problems (as well as double the speed of your initial power up if you have an external drive or 2 or 3). Possibilities for 1.3: Allow for workbench/kickstart disk via multiple partitions on the disk. -Matt
cs195@sdcsvax.UCSD.EDU (eecs 195 ) (10/06/86)
Yes, kickBench is wonderful!!!! I wake up in the morning, flick the power switch, and go take a shower. When I return, my mail from several accounts has been printed out... Roger.