2001-10-14 Thierry Laronde Raison d'ĂȘtre: - allow booting from CD via El Torito extensions. - allow booting and using extended (unusual) floppy formats. General modifications: - WARNING: COMPATIBILITY BROKEN!!! The compatibility version number has reached 4.0, and, more importantly, the place to search for it in stage1 has changed. YOU NEED COMPATIBLE STAGE1, STAGE2 and GRUB SHELL!!! - Identifying GRUB: in stage1, at offset 0x3 one finds the following string: "GRUB "'\0' /* exactly 8 bytes */ [This string is also used by the `message' routine; it now stops displaying at the first non printable character] - New variables: `grub_run_flags', `old_int1e', `bios_description', array of disk structure `kdisks'. - All flags are passed at installation time to stage1_inst_flags, at running time to `grub_run_flags' --- "8 bits flags should be enough for everybody" TL :-^ - The data organization in stage1[.S] has changed - The values of numerous constants have been corrected [in stage.h]. The value for BPB length was wrong for example. - All the routines for probing floppies have been removed, and replaced by the standard call, the number of floppies being obtained via INT 11h, and being corrected in case of El Torito floppy emulation [see stage2/common.c]. - A general disks array [kdisks] is created and filled at initialization time, devices being probed later only if they are flagged REMOVABLE. The mbi structures have not been changed, and the grub shell `disks' is kept at the moment -> unification have to be done later. - Names of magic numbers or constants have been changed with the following principles: if this is a memory location, the name is composed: __OFFSET if this is a value, the name is composed: _DESCRIPTION /* whether it's used by STAGE1 only or not */ Details by file: * stage1/stage1.S: major rewrite, add El Torito and customized geometry support, remove floppy probe routines. DATA organization changed, tons of comments added: please read it! To be noted: initialization of `grub_run_flags'. * stage1/stage1.h: corrections of names and values. Added numerous constants, specially about BPB and stage1 installation time flags, and GRUB run time flags. The BPB constants have been moved from stage2/shared.h to stage1/stage1.h. * stage2/start.S: modified to match the new data structure in stage1. * stage2/asm.S: - recopy stage1 important data: `grub_run_flags', `bios_description', geometry of the booting drive (if CHS) in `boot_disk_geom', `old_int1e' - removed function `get_diskinfo_floppy' - added function `disk_changed' - added code to retrieve the BIOS description of the machine (mainly for the number of floppy drives [used in common.c]) * stage2/common.c: initialization of new structure kdisks, probing _all_ the drives, including floppy drives. * stage2/bios.c: - removed references to get_diskinfo_floppy - modification of get_diskinfo to handle the new disks array `kdisks'. * stage2/builtins.c: - updated name of constants - geometry_func: new options to write and set the geometry * grub/grub/asmstub.c: initializations of global variables unused: boot_disk_geom, bios_description, grub_run_flags. * docs/grub.texi: advertised support for El Torito and unusual floppy formats. Updated `geometry' function description.