I've updated my patch some more. Please comment if you see something
that should be done in a different way, or whatever.

--- multiboot-old.texi  Mon Jan 31 09:55:40 2000
+++ multiboot.texi      Tue Feb  1 20:12:16 2000
@@ -353,6 +353,11 @@
 24      | bss_end_addr      |   (present if flags[16] is set)
 28      | entry_addr        |   (present if flags[16] is set)
         +-------------------+
+32      | mode_type         |   (present if flags[17] is set)
+32      | width             |   (present if flags[17] is set)
+36      | height            |   (present if flags[17] is set)
+40      | depth             |   (present if flags[17] is set)
+        +-------------------+
 @end group
 @end example
 
@@ -383,6 +388,9 @@
 bootloader is capable of passing a memory map (the @samp{mmap_*} fields)
 and one exists, then it must be included as well.
 
+If bit 2 in the @samp{flags} word is set, information about the video
+mode table, defined later, must be available to the kernel.
+
 If bit 16 in the @samp{flags} word is set, then the fields at offsets
 8-24 in the Multiboot header are valid, and the boot loader should use
 them instead of the fields in the actual executable header to calculate
@@ -430,6 +438,28 @@
 The checksum is a 32-bit unsigned value which, when added to
 the other required fields, must have a 32-bit unsigned sum of zero.
 
+If bit 17 is set, information about a preferred default mode is
+specified in the @samp{mode_type], @samp{width}, @samp{height} and
+@samp{depth} fields. This is only a @emph{recommended} mode by the
+kernel. If the mode exists, the boot loader should set it if the user
+hasn't specified a mode. If not, it should fall back to a similar mode,
+if available.
+
+This flag should only be used together with bit 2. If this flag is found
+alone, the boot loader should signal an error to the user and abort the
+loading of the kernel.
+
+Valid numbers for @samp{mode_type} is 0 for linear graphics mode and 1
+for EGA-standard text mode. Everything else is reserved for future
+expansion.
+
+@samp{width} and @samp{height} is specified in pixels, if graphics mode,
+or characters in EGA text mode. @samp{depth} is given in bits per pixel
+for graphics, or zero for EGA text modes.
+
+Any, some or all of those fields may be left out, indicating to the boot
+loader that no preference is given. This makes it possible for a kernel
+to just say it wants a 32-bit resolution, for example.
 
 @node Machine state
 @section Machine state
@@ -549,6 +579,8 @@
         +-------------------+
 68 - ?? | apm_table         |    (present if flags[10] is set)
         +-------------------+
+?? - ?? | graphics_table    |    (present if flags[11] is set)
+        +-------------------+
 @end group
 @end example
 
@@ -800,6 +832,36 @@
 
 @c I haven't defined the apm_table field yet. - okuji
 
+If bit 11 in the @samp{flags} is set, video mode information is
+available in the mode table. This should only be done if the kernel has
+indicated in the @samp{Multiboot Header} that it accepts graphics modes.
+
+The mode table looks like this:
+
+@example
+@group
+
+        +----------------------+
+0       | mode_type            |
+4       | width                |
+8       | height               |
+12      | depth                |
+16      | frame_buffer_address |
+        +----------------------+
+
+@end group
+@end example
+
+Valid numbers for @samp{mode_type} is 0 for linear graphics mode and 1
+for EGA-standard text mode. Everything else is reserved for future
+expansion.
+
+@samp{width} and @samp{height} is specified in pixels, if graphics mode,
+or characters in EGA text mode. @samp{depth} is given in bits per pixel
+for graphics, or unused for EGA text mode.
+
+@samp{frame_buffer_address} specifies the physical start address of the
+linear frame buffer. This is valid for both graphics and text modes.
 
 @node Examples
 @chapter Examples

Reply via email to