Boot manager beep (revisited)

John Baldwin jhb at freebsd.org
Mon May 1 18:03:22 UTC 2006


On Monday 01 May 2006 09:07, Giorgos Keramidas wrote:
> On 2006-05-01 15:03, Daniel Lang <langd-freebsd-hackers at leo.org> wrote:
> > Alex Zbyslaw wrote on Mon, May 01, 2006 at 10:31:34AM +0100:
> > [..]
> > > >off by setting WITHOUT_BOOTEASY_BEEP in `/etc/src.conf'.
> > [..]
> > > WITH_BOOTEASY_BEEP so that it's off by default unless you turn it on 
> > 
> > Regardless what you decide, if such an option is created, please
> > call it WITH/WITHOUT_BOOTZERO_BEEP or WITH/WITHOUT_BOOT0_BEEP.
> > 
> > The current FreeBSD bootmanager is called 'boot0'. It has replaced
> > booteasy (which was indeed used in the past) centuries ago.
> 
> I'll do, thanks for the careful review of the diff :)

How about the patch below.  It restores the behavior of the beep
only happening for invalid input by axeing the BSD/OS partition
type from the lookup table.

Index: boot0.S
===================================================================
RCS file: /usr/cvs/src/sys/boot/i386/boot0/boot0.S,v
retrieving revision 1.14
diff -u -r1.14 boot0.S
--- boot0.S	8 Feb 2005 20:43:04 -0000	1.14
+++ boot0.S	1 May 2006 18:00:37 -0000
@@ -29,7 +29,7 @@
 		.set PRT_OFF,0x1be		# Partition table
 
 		.set TBL0SZ,0x3 		# Table 0 size
-		.set TBL1SZ,0xb 		# Table 1 size
+		.set TBL1SZ,0xa 		# Table 1 size
 
 		.set MAGIC,0xaa55		# Magic: bootable
 		.set B0MAGIC,0xbb66		# Identification
@@ -198,12 +198,16 @@
 		movb _OPT(%bp),%dl		# Display
 		decw %si			#  default
 		callw putkey			#  key
+		jmp main.7_1			# Skip beep
 /*
- * Start of input loop.  Beep and take note of time
+ * Users's last try was bad, beep in displeasure.
  */
 main.10:	movb $ASCII_BEL,%al		# Signal
 		callw putchr			#  beep!
-		xorb %ah,%ah			# BIOS: Get
+/*
+ * Start of input loop.  Take note of time
+ */
+main.7_1:	xorb %ah,%ah			# BIOS: Get
 		int $0x1a			#  system time
 		movw %dx,%di			# Ticks when
 		addw _TICKS(%bp),%di		#  timeout
@@ -410,7 +414,7 @@
  * These values indicate bootable types we know the names of.
  */
 		.byte 0x1, 0x6, 0x7, 0xb, 0xc, 0xe, 0x83
-		.byte 0x9f, 0xa5, 0xa6, 0xa9
+		.byte 0xa5, 0xa6, 0xa9
 /*
  * These are offsets that match the known names above and point to the strings
  * that will be printed. os_misc will be used if the search of the above table
@@ -423,7 +427,6 @@
 		.byte os_dos-.			# Windows
 		.byte os_dos-.			# Windows
 		.byte os_linux-.		# Linux
-		.byte os_bsd-.			# BSD/OS
 		.byte os_freebsd-.		# FreeBSD
 		.byte os_bsd-.			# OpenBSD
 		.byte os_bsd-.			# NetBSD


-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org


More information about the freebsd-hackers mailing list