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