Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!columbia!rutgers!princeton!allegra!ulysses!mhuxt!ihnp4!inuxc!pur-ee!uiucdcs!uxc.cso.uiuc.edu!hamilton From: hamilton@uxc.cso.uiuc.edu.UUCP Newsgroups: comp.sys.amiga Subject: Re: Sidecar (and Happy New Year to Message-ID: <172200023@uxc.cso.uiuc.edu> Date: Thu, 1-Jan-87 16:19:00 EST Article-I.D.: uxc.172200023 Posted: Thu Jan 1 16:19:00 1987 Date-Received: Sun, 4-Jan-87 21:39:30 EST References: <10865@sun.uucp> Lines: 62 Nf-ID: #R:sun.uucp:10865:uxc.cso.uiuc.edu:172200023:000:2230 Nf-From: uxc.cso.uiuc.edu!hamilton Jan 1 15:19:00 1987 cmcmanis@sun says: > For what it is worth, once again "No, you cannot boot the workbench from > any device other than DF0:." > To understand why this is so consider that you are not really booting > at all. After putting in the kickstart (which won't be necessary when > you put ROM's in your machine) AmigaDOS, is *already* loaded. All the > startup code apparently does is create a new task, LoadSeg the CLI > from DF0:, open the console device, open the file s/Startup-Sequence > connect Startup-Sequence to Input() and the console window to Output() > and then start multitasking. The problem is of course that magic called > "install" and KickStart. DF0: is hard coded into kickstart and something > about the information Install copies to the disk is vital too, although > I haven't figured out what it is yet. So no, you can't boot from anyone's > hard disk without getting a hacked kickstart disk. actually, the CLI is also in the kickstart, so it isn't LoadSeg()ed from df0:. (i haven't had a chance to play with my 1.2 yet, so i'm talking about 1.1). the boot code written by "install" is very simple; paraphrasing in C: long boot(a1) struct IOExtTD *a1; /* ->ioreq used to read boot blocks */ { struct Resident *d0, *FindResident(); #ifdef KICKBENCH /* the KickBench boot block transforms * the disk from type "KICK" to type "DOS" */ long *a0; a1->io_Command = CMD_WRITE; a0 = (long *) a1->io_Data; *a0 = 0x444F5300L; /* 'D','O','S','\0' */ DoIO(a1); #endif /*KICKBENCH*/ if ((d0 = FindResident("dos.library")) == NULL) return(-1L); else { struct Resident *a0; a0 = d0; (a0->rt_Init)(); /* <- the real "magic" */ return(0L); } } df0: is hard-coded into AmigaDos in at least a couple places. i haven't made a serious effort to redirect it, and offhand, i suspect it is more difficult than a few simple patches. however, this is a perfect application for a KickBench. 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