Ignore:
Timestamp:
Jan 13, 2013, 8:46:36 AM (13 years ago)
Author:
Ben Rietbroek
Message:

Fixed Win7 boot from FAT32 and HPFS zero-drive ussue [2011-11-20]

Fixes

o Fixed booting Windows 7 from FAT32

Booting Windows (NT/2K/XP/Vista/7) from FAT32 when the actual system
resides on an NTFS partition actually chainload the Windows
boot-loader in the FAT32 partition.
A bug in the handling of such a FAT32 partition with the Windows
boot-loader caused it not to find NTLDR is some cases.

o Fixed HPFS zero-drive issue

The BPB contains a field that indicates the boot-drive to the
OS2BOOT and OS2LDR programs. When creating an HPFS partition and
then restoring a system from archive (i.e. a zip-file) of course
does not set this field, since only files are restored.
This causes the boot process to halt with "...cannot operate..."
or even boot another HPFS partition. This field is now derived from
the LVM drive-letter if it contains an incorrect value.

o Corrected CRC calculations on AiR-BOOT configuration

V1.07 expanded the number of partitions from 30 to 45.
However, this was not done correctly and the configuration CRC was
still caclulated over 5 sectors. Initial v1.0.8 code corrected this
but this results in the v1.07 installer and setaboot programs
breaking on v1.0.8 code. So, for the time being the CRC caclucation
is reverted back to 5 sectors for the sake of v1.07 compatibility.
Save and restore of the configuration use 7 sectors of course.

o Corrected contact information

V1.07 shipped with the wrong contact information, causing issues
to be reported on sourceforge instead of netlabs.

Changes

o Renamed original README.TXT to README.MKW
o Added 1README.TXT
o Added COPYING (GNU License)

Note

This commit and all following commits upto and including the RC3
commit [2012-09-09] are delayed commits from a local repository.
Also, the RC (Release Candidate) naming of the corresponding commits
is a bit misleading. One would label a revision with RC when near to
a final release. Since many things have changed between RC1,RC2 & RC3,
these RC's should be interpreted as mile-stones.

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 ABOVE COMMITS!!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BOOTCODE/AIR-BOOT.ASM

    r31 r32  
    2525; - Fixed driveletter feature which was broken in v1.07.
    2626; - Reworked MBR-code to provide two I13X signatures.
    27 ; - Esc from SETUP would save to disk.
    28 ;   It now retains the changes only for this boot and
    29 ;   does not write them to disk.
     27; - Fixes booting older eCS installations on HPFS
     28; - Fixes booting Windows when installed in logical partition
     29;   with loader on FAT32.
    3030; - Corrected contact links.
    31 ; -
     31; NOTE:
     32;   AB v1.07 had a bug with saving and loading the correct size of the
     33;   configuration. Therefore the CRC over the config was also calculated
     34;   wrongly.
     35;   While AB v1.0.8 fixes this, it has to use the v1.07 way of CRC calculation.
     36;   Otherwise SET(A)BOOT from the eCS v2.1 would break and reboot after phase1
     37;   would show the boot-menu instead of automatically booting the system
     38;   being installed. (SET(A)BOOT would see a corrupted AB config)
     39;   This means that the CRC over the AB config is calculated over 5 sectors
     40;   instead of 7, just like in v1.07.
     41;   This will be corrected with a future release of eComStation.
     42;   Note that after such a correction, an installation from a v2.1 eCS CD
     43;   with a version of AiR-BOOT >v1.07 active will not automatically
     44;   boot-through after phase1.
    3245;
    3346; v1.07
     
    106119; If defined then include DEBUG.ASM and output debug-info to serial-port.
    107120;
    108 AuxDebug                   equ      1
     121;AuxDebug                   equ      1
    109122
    110123; Com-port for debugging, 0 is disabled
     
    216229                                             ; (relative to entry)
    217230
    218 ; Rousseau: added (index in LVM-sector)
     231; Rousseau: added (index in extpart LVM-sector)
    219232LocLVM_Secs                 equ         20h  ; Sectors per Track (OS/2 ext-geo)
    220233LocLVM_Heads                equ         1ch  ; Number of heads
    221 LocLVM_VolumeLetter2        equ         78   ; is BYTE (Letter C-Z or 0)             ; FOUT !! niet entry relative !
    222 LocLVM_Startable            equ         77   ; is startable (newly installed system) ; FOUT !! niet entry relative !
    223 LocLVM_OnBootMenu           equ         76   ; is on bootmenu                        ; FOUT !! niet entry relative !
     234LocLVM_VolumeLetter2        equ         78   ; is BYTE (Letter C-Z or 0)
     235LocLVM_Startable            equ         77   ; is startable (newly installed system)
     236LocLVM_OnBootMenu           equ         76   ; is on bootmenu
    224237
    225238; Truncated to 11 chars when  displayed in menu
     
    625638; in this function. That's done around line 500.
    626639; Putting this few bytes here creates just enough room.
    627 ; The size of this function should grow.
    628640MBR_LoadConfig                Proc Near
    629               ; Changed from conditional assembler to calculated
     641              ; Changed from conditional assembler to calculated value
    630642              ; Fixes issue: #2987 -- "air-boot doesn't remember drive letter"
    631               mov     ax, (MBR_BackUpMBR - Configuration) / 2  ; sizeof(ab-configuration) to write
    632             ; TASM does not evaluate expression above corrrectly.
    633             ; Listing shows correct opcode but generated opcode has imm. word byteswapped.
    634             ; Casting to byte also does not work (overflow).
    635             ; So we swap back here -- must be removed in JWasm version !!
    636                xchg    ah,al
     643              ; Size of the ab-configuration in 512 byte sectors
     644              mov     al, (MBR_BackUpMBR - Configuration) / 200h
    637645              mov     ah,02h
    638 
    639646              int     13h
    640647      ret
     
    934941               ; COM-PORT DEBUG
    935942               ;
    936                call     AuxIO_TeletypeNL
     943;               call     AuxIO_TeletypeNL
    937944               mov      si, offset PartitionTable
    938                call     AuxIO_DumpSector
    939                call     AuxIO_TeletypeNL
     945;               call     AuxIO_DumpSector
     946;               call     AuxIO_TeletypeNL
    940947
    941948
     
    11301137IFDEF AuxDebug
    11311138b_debug:
    1132    Include REGULAR\DEBUG.ASM     ; Various debugging routines,
     1139;   Include REGULAR\DEBUG.ASM     ; Various debugging routines,
    11331140                                 ; uses AUXIO and CONV
    11341141size_debug = $-b_debug
     
    11361143
    11371144b_auxio:
    1138 Include REGULAR\AUXIO.ASM        ; Com-port support for debugging
     1145;Include REGULAR\AUXIO.ASM        ; Com-port support for debugging
    11391146size_auxio = $-b_auxio
    11401147
Note: See TracChangeset for help on using the changeset viewer.