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/REGULAR/VIDEOIO.ASM

    r30 r32  
    143143;        In: SI - String to Print (EOS is 0)
    144144; Destroyed: SI
    145 VideoIO_PrintLikeLenOfName      Proc Near   Uses es di
     145VideoIO_PrintLikeLenOfName      Proc Near   Uses cx es di
    146146   push    si
    147147      xor     cx, cx
     
    190190;        In: AL - Single Char to Print
    191191; Destroyed: None
    192 VideoIO_PrintSingleChar         Proc Near   Uses ax es di
    193    mov     bl, al
    194    call    VideoIO_Internal_SetRegs
    195    mov     es:[di], bl
    196    mov     es:[di+1], ah
    197    inc     TextPosX
    198    ret
     192VideoIO_PrintSingleChar         Proc Near   Uses ax bx es di
     193    mov     bl, al
     194    call    VideoIO_Internal_SetRegs
     195    mov     es:[di], bl
     196    mov     es:[di+1], ah
     197    inc     TextPosX
     198    ret
    199199VideoIO_PrintSingleChar         EndP
    200200
     
    266266;            CL - Times to print it
    267267; Destroyed: None
    268 VideoIO_PrintSingleMultiChar    Proc Near   Uses ax cx es di
     268VideoIO_PrintSingleMultiChar    Proc Near   Uses ax bx cx es di
    269269   or      cl, cl
    270270   jz      VIOPSMC_NoChars
     
    637637
    638638;
    639 ; Rousseau: added
    640 ; Set poosition to teletype cursor
     639; Set position to teletype cursor
    641640;
    642641VideoIO_SyncPos                 Proc Near   Uses ax bx cx dx
     
    687686; Dump the disk-info.
    688687; Disk number is in DL.
    689 VideoIO_DumpDiskInfo    Proc Near
     688VideoIO_DumpDiskInfo    Proc Near uses ax bx cx dx
    690689
    691690   VideoIO_DumpDiskInfo_next_disk:
     
    725724      call     VideoIO_PrintSingleMultiChar
    726725
    727       inc      [TextPosY]
    728       mov      [TextPosX],dh
    729       mov      si, offset BiosCyls
    730       call     VideoIO_Print
    731 
    732       push     dx
    733       mov      bx,offset BIOS_Cyls
    734       xor      dh,dh
    735       and      dl,01111111b
    736       shl      dx,1
    737       shl      dx,1
    738       add      bx,dx
    739       mov      ax,[bx]
    740       mov      dx,[bx+02]
    741       call     VideoIO_PrintHexDWord
    742       pop      dx
     726;      inc      [TextPosY]
     727;      mov      [TextPosX],dh
     728;      mov      si, offset BiosCyls
     729;      call     VideoIO_Print
     730
     731;      push     dx
     732;      mov      bx,offset BIOS_Cyls
     733;      xor      dh,dh
     734;      and      dl,01111111b
     735;      shl      dx,1
     736;      shl      dx,1
     737;      add      bx,dx
     738;      mov      ax,[bx]
     739;      mov      dx,[bx+02]
     740;      call     VideoIO_PrintHexDWord
     741;      pop      dx
    743742
    744743      inc      [TextPosY]
     
    782781
    783782      push     dx
     783      ; Offset of array containing LVM SPT values for each disk found
    784784      mov      bx,offset TrueSecs
     785      ; DX to index
    785786      xor      dh,dh
    786787      and      dl,01111111b
     
    788789      shl      dx,1
    789790      add      bx,dx
     791      ; Get LVM SPT
    790792      mov      ax,[bx]
    791793      mov      dx,[bx+02]
Note: See TracChangeset for help on using the changeset viewer.