[net.micro.amiga] KickBench

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.