diff options
Diffstat (limited to 'contrib/auto-default')
-rw-r--r-- | contrib/auto-default/mail | 40 | ||||
-rw-r--r-- | contrib/auto-default/main.c.patch | 55 |
2 files changed, 0 insertions, 95 deletions
diff --git a/contrib/auto-default/mail b/contrib/auto-default/mail deleted file mode 100644 index 015c789a..00000000 --- a/contrib/auto-default/mail +++ /dev/null @@ -1,40 +0,0 @@ -Date: 11/9/2001 3:56 PM -Received: 11/9/2001 4:05 PM -From: Steve Tilden, stilden@sicom-sys.com - -... - -2) I have added conditional code to main.c from Etherboot 5.0.4 to add -a new default boot option and I have included the modified main.c as an -attachment to this message. - -As I received Etherboot 5.0.4, in the Config file, if you select -ASK_BOOT with a non zero time-out option, then you also get to set -ANS_DEFAULT = ANS_NETWORK or ANS_DEFAULT = ANS_LOCAL to determine what -will happen if the operator does not respond to the prompt. I have now -added conditional code in main.c such that if you set ANS_DEFAULT = -ANS_AUTO, the default answer will be set according to whether or not -there is a hard disk in the system (as detected by the BIOS). If a hard -disk is present, then if the operator does nothing, the system will boot -from it. If a hard disk does not exist, then again if the operator does -nothing, the system will boot via the network. Either way, for our -particular environment, the operator has to do nothing to get it to boot -correctly. Yet the operator can still override the default selection -to, for example, allow a unit without a hard disk, to boot directly from -a floppy rather than the network, or to allow a unit with a hard disk, -to boot from the network. - -I don't know it the code I have added might be correct for a future -production version of Etherboot, but I thought I'd send it to you and -let you get it into the system if you feel it might be appropriate. - -Thanks, - -Steve Tilden -Sicom Systems Inc. -stilden@sicom-sys.com - -[Ed: On a compliant BIOS, it will actually boot the next device in the -BIOS list if local is selected, either explicitly or by timeout, which -may or may not be the hard disk, which is why it's less than general and -not included in the distribution by default.] diff --git a/contrib/auto-default/main.c.patch b/contrib/auto-default/main.c.patch deleted file mode 100644 index e707b63a..00000000 --- a/contrib/auto-default/main.c.patch +++ /dev/null @@ -1,55 +0,0 @@ ---- main.c Mon Nov 5 18:58:30 2001 -+++ main.c.new Thu Nov 15 01:45:12 2001 -@@ -149,21 +151,49 @@ - static unsigned short ipchksum(unsigned short *ip, int len); - static unsigned short udpchksum(struct iphdr *packet); - -+ -+#if defined(ASK_BOOT) && ASK_BOOT > 0 && (ANS_DEFAULT == ANS_AUTO) -+/* -+ * Read Installed Hard Disk Count from BIOS memory at 0:0475 -+ */ -+static int hdsk_cnt(void) -+{ -+ int retv; -+ __asm__ __volatile__( -+ "xorw %%ax,%%ax\n\t" -+ "movb 0x475,%%al\n" -+ : "=a" (retv) -+ : /* no inputs */ -+ : "ax", "cc", "memory" -+ ); -+ return(retv); -+} -+#endif /* ASK_BOOT && ANS_AUTO */ -+ -+ - static inline void ask_boot(void) - { - #if defined(ASK_BOOT) && ASK_BOOT > 0 - while(1) { -- int c; -+ int c, deflt; - unsigned long time; -+#if defined(ASK_BOOT) && ASK_BOOT > 0 && (ANS_DEFAULT == ANS_AUTO) -+ if (hdsk_cnt() != 0) -+ deflt = ANS_LOCAL; -+ else -+ deflt = ANS_NETWORK; -+#else -+ deflt = ANS_DEFAULT; -+#endif - printf(ASK_PROMPT); - for (time = currticks() + ASK_BOOT*TICKS_PER_SEC; !iskey(); ) - if (currticks() > time) { -- c = ANS_DEFAULT; -+ c = deflt; - goto done; - } - c = getchar(); - if ((c >= 'a') && (c <= 'z')) c &= 0x5F; -- if (c == '\n') c = ANS_DEFAULT; -+ if (c == '\n') c = deflt; - done: - if ((c >= ' ') && (c <= '~')) putchar(c); - putchar('\n'); |