Bool DriveTypeSet(U8 drv_let, I64 type=FSt_REDSEA)
{//Very dangerous
    I64          i, j, ext_base, drv_num, offset, cur_type;
    CMasterBoot  mbr;
    CBlkDev     *bd;

    drv_let = Letter2Letter(drv_let);
    bd = Letter2BlkDev(drv_let);
    drv_num = bd->first_drive_let - 'A';
    switch (bd->type)
    {
        case BDT_ATA:
            offset = 0;
            ext_base = INVALID_CLUS;
            while (TRUE)
            {
                AHCIAtaBlksRead(bd, &mbr, offset, 1);
                j =- 1;
                for (i = 0; i < 4; i++)
                {
                    cur_type = mbr.p[i].type;
                    if (cur_type)
                    {
                        if (cur_type == 5 || cur_type == 15)
                            j = i;
                        else
                        {
                            if (drv_num + 'A' == drv_let)
                            {
                                switch (type)
                                {
                                    case FSt_REDSEA:
                                        mbr.p[i].type = MBR_PT_REDSEA;
                                        break;

                                    case FSt_FAT32:
                                        mbr.p[i].type = MBR_PT_FAT32a;
                                        break;

                                    case FSt_ISO9660:
                                        PrintErr("File System Not Writable\n");
                                        throw('Drive');

                                    default:
                                        throw('Drive');
                                }
                                mbr.p[i].active = 0x80;
                                AHCIAtaBlksWrite(bd, &mbr, offset, 1);
                                return TRUE;
                            }
                            drv_num++;
                        }
                    }
                }
                if (j < 0)
                    break;
                if (!mbr.p[j].offset)
                    break;
                if (ext_base == INVALID_CLUS)
                {
                    offset = mbr.p[j].offset;
                    ext_base = offset;
                }
                else
                    offset = mbr.p[j].offset+ext_base;
            }
            break;
    }
}

U0 Format(I64 drv_let, Bool quick=TRUE, Bool confirm=TRUE, I64 type=FSt_FAT32)
{//Format hard drive or RAM drive.
//Warning: Destroys all prev info.
    //quick=FALSE means fill entire drive with zeros.
    //Choose FSt_FAT32 or FSt_REDSEA.
    //You don't format a CD/DVD with this.
    CDrive  *drive = Letter2Drive(drv_let);
    Bool     old_silent = IsSilent;

    if (confirm && !AreYouSure)
        return;
    if (!drive)
    {
        PrintErr("Invalid Drive\n");
        return;
    }
    switch (type)
    {
        case FSt_FAT32:
            if (drive->bd->type == BDT_ATA)
            {
                Silent;
                Drive(drv_let);
                Silent(old_silent);
                FAT32Format(drv_let, quick);
                DiskCacheInvalidate(Letter2Drive(drv_let));
                Drive(drv_let);
                break;
            }
            "Using RedSea File System.\n";
        case FSt_REDSEA:
            Silent;
            Drive(drv_let);
            Silent(old_silent);
            RedSeaFormat(drv_let, quick);
            DiskCacheInvalidate(Letter2Drive(drv_let));
            Drive(drv_let);
            break;

        default:
            PrintErr("File System Not Supported\n");
    }
}