source: trunk/BOOTCODE/AIR-BOOT.HIS@ 45

Last change on this file since 45 was 45, checked in by Ben Rietbroek, 12 years ago

Now using compressed HidePartTable (auxdebug on) [2012-02-24]

WARNING!!

All commits upto and including the commit of [2012-05-13] contain
a severe bug!! Building from these sources and then disabling
the 'force LBA' feature while also using the drive-letter feature or
editing the label can DESTROY THE MBR on ALL ATTACHED DISKS!!
DO NOT DISABLE 'FORCE LBA USAGE' WHEN BUILT FROM THE THESE COMMITS!!

Fixes

o HidePartTabled now uses a 6-bit compressed format

Bitfield functions are used to manipulate the table.
Modifications mostly in PARTSCAN.ASM, PART_SET.ASM and PARTMAIN.ASM.
TODO: Determine impact on upgrading from previous versions.

Changes

o Changed LVM Label behavior

If they are the same, the LVM VolumeName is synced to LVM PartitionName
so they are the same again after the edit.
If they differ, only the LVM VolumeName is updated.

o Implemented stop scanning when partition limit of 45 is exceeded

User is presented with a warning pop-up.
Pressing a key will continue and the partitions that were found
so far are displayed in the menu.
The color of the selection bar is changed to red to indicate this
overflow situation.

o New overlap macro that works correctly with JWasm and Tasm

Now uses DB n DUP (<filler>) to fill space before a new ORG.
When overlap occurs n goes negative causing assembler error.

File size: 11.7 KB
Line 
1;
2; AiR-BOOT (c) Copyright 1998-2008 M. Kiewitz
3;
4; This file is part of AiR-BOOT
5;
6; AiR-BOOT is free software: you can redistribute it and/or modify it under
7; the terms of the GNU General Public License as published by the Free
8; Software Foundation, either version 3 of the License, or (at your option)
9; any later version.
10;
11; AiR-BOOT is distributed in the hope that it will be useful, but WITHOUT ANY
12; WARRANTY: without even the implied warranty of MERCHANTABILITY or FITNESS
13; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14; details.
15;
16; You should have received a copy of the GNU General Public License along with
17; AiR-BOOT. If not, see <http://www.gnu.org/licenses/>.
18;
19
20
21
22; ---------------------------------
23; Rousseau: Fixes and Enhancements
24; ---------------------------------
25;
26; v1.0.8-rc2-bld20120224
27;-----------------------
28; # Implemented stop scanning when max. partitions limit exceeded #
29; Previous versions halted the system when the maximum number of partitions
30; that can be handled (45) was exceeded.
31; This required the user to boot from alternate media to correct the problem.
32; Now, when the partition limit is exceeded, AiR-BOOT displays a pop-up
33; and waits for a key-press. When the user presses a key, AiR-BOOT continues
34; and the boot-menu is shown, enabling the user to boot a system to correct
35; the problem. To indicate this situation, the color of the selection-bar
36; is displayed in red.
37;
38; # Fixed hiding partitions above old max 30-partitions limit #
39; Hiding partitions is a per partition setting and it is kept in a table
40; in the AiR-BOOT image on disk. In previous versions, including v1.0.8-rc1,
41; this table still held the old number of maximum partitions (30).
42; So configuring a hide-setting for partitions >30 or hiding more than
43; 30 partitions per partition would not work properly.
44; Unfortunately, there was no room to expand this table, since it resides
45; just below the MBR backup, at the end of the AiR-BOOT image.
46; To work around this, the table now uses a 6-bits packed format and the
47; drive-letter array, which followed this table has been moved elsewhere.
48; This is a change in the configuration layout since the previous version,
49; so the config-version has been bumped to v1.0.8.
50; TODO: Add upgrade-code to the installer to cope with this.
51;
52; # Removed requirement for LVM P and V name to be the same to edit #
53; However, when both are the same before the edit, the V name will be
54; synved to the P name to have them both the same again after the edit.
55; If they differ, only the V name is updated.
56;
57; # Trying to edit the label of a type 0x35 partition now shows a popup #
58; The user is informed that type 0x35 labels cannot be edited.
59;
60; # Type 0x35 partitions cannot be added to the AB-menu anymore #
61; They are not bootable anyway. The user is informed by a popup.
62;
63; # De-tasemized the Assembler sources for JWasm compatibility #
64; AiR-BOOT can now be built using JWasm, which is the preferred
65; assembler as of this release. Tasm support will be dropped in the future.
66;
67; # Completely reworked the build-system #
68; Everything is now done with Makefiles using WMake, Wlink and the
69; C/C++ Compilers from the Open Watcom development tools together with JWasm.
70; This obsoletes tasm, tlink and exe2bin.
71;
72; # Cross-Platform support #
73; AiR-BOOT and it's helpers can now be built on: DOS, Win32, OS/2 and Linux.
74;
75; # Rewrote FIXCODE.ASM in C so the tool-chain is not dependent on a DOS .COM
76; program for embedding the MBR-protection. DOS,Win32,OS/2 and Linux
77; versions of FIXCODE are now used. (EXE[MZ|PE|LX] and ELF)
78;
79; v1.0.8-rc1-bld20120124
80; ----------------------
81; # Changed version format to be more WarpIN compatible #
82; This is a cosmetic change only, the internal format has not changed.
83;
84; # Show LVM VolumeName instead of LVM PartitionName #
85; Previous versions of AiR-BOOT used the LVM PartitionName as the Label
86; if LVM-info was present for the partition.
87; This is inconsistent with MiniLVM which shows the LVM VolumeName.
88; Starting with v1.0.8 the LVM VolumeName is displayed.
89;
90; # LVM Partition and Volume name Synchronization #
91; Changing the Label of a partition with LVM-info now synchronizes
92; the LVM Partition Name with the LVM Volume Name.
93; This is the same behavior as MiniLVM.
94; Note however that the Label can only be changed when both the
95; LVM PartitionName and LVM VolumeName are the same.
96; See protected editing below.
97;
98; # Protected editing of the Label when LVM-info is present #
99; When the LVM VolumeName differs from the LVM PartitionName, the user can
100; edit the label but it will not be saved to the LVM record on disk.
101; This is to protect configurations created with the classic LVM tool.
102; Since MiniLVM assigns the same name to both the Partition and the Volume,
103; the Label can be edited and will be saved for such partitions.
104; To further protect a given configuration, LVM volumes with type 0x35
105; cannot be edited at all. This is to ensure that the LVM PartitionNames
106; remain unique when Spanning Volumes are used.
107;
108; # Editing the Label appended spaces #
109; When editing and changing the Label of a System using SETUP,
110; trailing spaces were stored in the LVM Volume and Partition names.
111; These labels need to be padded with zero's.
112; This has been fixed.
113; This bug is also present in v1.06.
114;
115; # Reworked Primary Partition <-> LVM-info association #
116; The previous way was to use a 1:1 correspondence between the PT-index
117; and the LVM-index. However, when the PT is cross-linked, lower entries
118; pointing to higher locations on the disk, or vice-versa, incorrect
119; LVM-info was associated. Such a cross-linked PT is sometimes generated
120; by the LVM engine when creating or deleting multiple partitions at once.
121; Best is to intermediately save after creating or deleting a partition
122; with (Mini)LVM.
123; The new way is to search the LVM-entries for the partition requested.
124;
125; # Reworked MBR-code to provide two I13X signatures #
126; The normal LVM MBR-code uses a special setup to indicate Int13X capability.
127; It contains the instruction, MOV EAX,'X31I', and some software checks
128; for the presence of the 'I13X' string in the MBR.
129; However, the location of this instruction differs between eCS 1.x and
130; eCS 2.x LVM MBR-code.
131; For compatibility, the v1.0.8 MBR has the 'I13X' string at both locations.
132;
133; # Fixed booting older eCS installations on HPFS #
134; When restoring systems from archive or otherwise generated systems,
135; the HPFS BPB sometimes lacked information that AiR-BOOT did not fill in.
136; The result was that a wrong partition was booted or that booting
137; stalled with the "unable to operate harddisk" message.
138; This has been fixed.
139;
140; # Fixed booting Windows from a logical partition with loader on FAT32 #
141; Depending on the configuration, sometimes the NTLDR could not be found.
142; This has been fixed.
143;
144; # Fixed drive-letter feature which was broken in v1.07 #
145; a) v1.07 did remember the drive-letter feature was active for a partition,
146; but it failed to store the drive-letter because too few configuration
147; sectors were saved. This resulted in arbitrary values to be assigned
148; to the drive-letter for the partition.
149; b) The JFS PBR-code does not use the in-memory BPB but uses the one
150; that is on disk. This prevented AiR-BOOT from passing the user assigned
151; drive-letter. AiR-BOOT now inserts the drive-letter in the BPB on disk,
152; but only if the partition is JFS.
153; AB v1.06 is also unable to use the drive-letter feature on JFS.
154; As a convenience, a drive-letter in the dl-feature pop-up can now be set
155; to "Disabled" by pressing backspace.
156; (As opposed to arrowing up/down to get to the "Disabled" entry)
157;
158; # Fixed stuck phase1 indicator when wrong name entered #
159; When using SET(A)BOOT /4:NAME with the MEMDRIVE env-var set,
160; and NAME being a non-existing partition, the phase1 indicator
161; would stay stuck between reboots.
162; This has been fixed.
163;
164; # Fixed DOS installer (AIRBOOT.COM) #
165; Behavior should now be the same as the eCS and WIN installers.
166; This re-enables the use of a bootable floppy or usb-stick
167; to install AiR-BOOT.
168;
169; # Fixed booting from FloppyDrive #
170; This is actually also broken in v1.06 when Int13X is forced on.
171; Now regular BIOS calls are used when booting from floppydrive.
172; A fresh AiR-BOOT installation now includes the floppydrive menu entry.
173;
174; # Fixed chainloading IBM Boot Manager #
175; AiR-BOOT v1.06 could chainload IBM-BM but only when it resided on
176; the first disk and was located below the 1024 cylinder and forced Int13X
177; extensions were disabled.
178; AiR-BOOT v1.0.8 can now chainload IBM-BM with forced Int13X extensions
179; enabled (the default) and if IBM-BM resides above the 1024 cylinder limit.
180; Also, chainloading IBM-BM from the second disk is supported.
181; Do not use chainloading IBM-BM unless you really have a need to.
182; See the AiR-BOOT Manual for "gotcha's" when using both AiR-BOOT and IBM-BM.
183;
184; # Corrected contact links #
185; Version 1.07 still presented the old contact links to the sourceforge
186; repository and the original author.
187; This caused confusion with regard to issues with v1.07.
188; This has been corrected.
189;
190; NOTE:
191; AB v1.07 had a bug with saving and loading the correct size of the
192; configuration. This broke the drive-letter feature.
193; As a result, the CRC over the config was also calculated wrongly.
194; While AB v1.0.8 fixes this, it has to use the v1.07 way of CRC calculation.
195; Otherwise SET(A)BOOT from the eCS v2.1 would break on AB v1.0.8 because it
196; sees a corrupt AiR-BOOT configuration.
197; This means that the CRC over the AB config is calculated over 5 sectors
198; instead of 7, just like in v1.07.
199;
200; NOTE:
201; Because of space constraints most of the debug code has been commented
202; out in this version.
203; Possibly it will be re-enabled after code cleanup and changing to JWasm.
204;
205;
206; v1.07
207; -----
208; # Huge Drives and LVM #
209; When using disks >512GB under eComStation, the drive geometry changes to
210; 127 or 255 sectors per track. Since LVM-info is written at the last sector
211; of a track, and AiR-BOOT uses the geometry of the MBR, it cannot find the
212; LVM-info and the eCS partition / volume bootsector.
213; This has been fixed.
214; Now, when an eCS-partition is discovered and the drive is >512GB, AiR-BOOT
215; will use the eCS geometry to locate the LVM-info and the bootsector.
216;
217; # Special loader handling #
218; The special handling of partition boot-loaders has been enhanced to
219; enable booting of legacy systems on huge drives with or without OS/2
220; extended geometry.
221;
222; # eComStation boot-through after phase 1 #
223; Special functionality is implemented to directly boot a newly
224; installed eCS system after completing phase 1 of the installation.
225; This works in conjuntion with the OS/2 specific SET(A)BOOT.EXE program,
226; also part of the AiR-BOOT package.
227;
228; # Math, Debug, Conv and Aux modules #
229; These are used for 32-bit arithmatic on 16-bit code,
230; debug the boot process, converting between data-types
231; and outputting log-data to the com-port.
232;
233;
234; v1.06
235; -----
236; This is the last version developed by Martin Kiewitz.
237; It serves as the base for the versions above.
238; Please do not post your feedback on sourceforge or bother Martin with
239; regard to issues with the above versions.
240; Use the eCS bug-tracker or the Trac project-page at netlabs and see the
241; documentation of this newer versions for the relevant contact information.
242
Note: See TracBrowser for help on using the repository browser.