Physical Boot Drive - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Physical Boot Drive

pmihailpmihail Posts: 2Member
Help ! I'm desperate ! I need to find out the address in BIOS where is stored the value for boot drive. I'm not talkin here about the logical boot drive (like A:, C:, D: ...etc) but i'm talking about the physical boot drive (0 for floppy, 80h for first harddisk, 81h for the second harddisk ... etc). Any system call wouldnt help me because i want to be operating system indpendent except that if that system call can tell me the address where i can find the value for the boot physical drive.
Anyone can help me ?!

Comments

  • jeffpostjeffpost Posts: 316Member
    : Help ! I'm desperate ! I need to find out the address in BIOS where is stored the value for boot drive. I'm not talkin here about the logical boot drive (like A:, C:, D: ...etc) but i'm talking about the physical boot drive (0 for floppy, 80h for first harddisk, 81h for the second harddisk ... etc). Any system call wouldnt help me because i want to be operating system indpendent except that if that system call can tell me the address where i can find the value for the boot physical drive.
    : Anyone can help me ?!
    :
    It's not stored in the BIOS; it's in the CMOS ram. Search the net for info on CMOS data.

  • dreammerchantdreammerchant Posts: 23Member
    The Drive type is located in CMOS RAM and the addresses are as follows:
    10 Diskette drive types
    == ====================
    bits 7-4 - drive 0 type (A:)
    bits 3-0 - drive 1 type (B:)
    0000b - no drive
    0001b - 360k
    0010b - 1.2M
    0011b - 720k
    0100b - 1.44M

    11 Reserved
    12 Hard disk drive type
    == ====================
    (for drives C: and D:, when between 1 and 14)
    bits 7-4 - fixed disk 0 type (C:)
    bits 3-0 - fixed disk 1 type (D:)
    0000b = no drive
    0001b-1110b = drive type
    1111b = drive 0 (1) type stored at addr 19h (1Ah)
    13 Reserved
    14 Equipment byte
    == ==============
    bits 7-6 - no. of floppy drives (00=1, 01=2, 10=3, 11=4)
    bits 5-4 - primary display 00 = none, EGA, VGA ...
    01 = 40x25 colour
    10 = 80x25 colour
    11 = 80x25 monochrome
    bits 3-2 - reserved
    bit 1 =1 if math copro installed
    bit 0 =1 if floppy drive(s) present

    19 Disk 0 type if (CMOS addr 12H & 0fH) is 0fH
    1A Disk 1 type if (CMOS addr 12H & f0H) is f0H

    what you have to do is-

    ;Read a cmos register
    cli ; make sure no interrupt wants to access the RTC in the mean time
    mov al,10h
    out 70h,al ;first let himknow which address you want to read/write to
    nop ;a slight delay
    in al,71h ;then read
    sti

    cli
    mov al,12h ;same as above.
    out 70h,al
    nop
    in al,71h
    sti







Sign In or Register to comment.