Bonjour à tous !
Je dispose d'une source C / ASM que j'ai récupérée sur CS (site géniallissime est-il besoin de le rappeller !).
Ce source permet d'activer ou désactiver une partition sur un disque
dur IDE. Je voudrai le rendre utilisable sur un disque-dur SCSI.
Est-ce que quelqu'un peut m'aider ?
#include <dos.h>
// Source pour activer la 1ère partition du premier disque
// et desactiver les autres partitions du même disque
// ( IDE0 maître )
struct Partition
{
unsigned char flag;
char description[15];
};
struct Mbr
{
char bootCode[0x1BE];
struct Partition table[4];
char signature[2];
};
int main()
{
struct Mbr mbr;
union REGS r, rout;
struct SREGS sr;
sr.es=FP_SEG(&mbr);
r.x.bx=FP_OFF(&mbr);
r.x.ax= 0x201; // lecture d'un secteur
r.h.dl= 0x80; // 1er disque
r.x.cx= 1; // 1er secteur
r.h.dh= 0; // piste 0 et tête 0
int86x(0x13, &r, &rout, &sr); // 1ère lecture factice au cas où le lecteur serait arrêté
int86x(0x13, &r, &r, &sr);
if( r.x.cflag )
return 1; // erreur de lecteur
else
{
mbr.table[0].flag= 0x80; // 1ère partition
mbr.table[1].flag= 0x80; // 2ème partition
mbr.table[2].flag= 0x80; // 3ème partition
mbr.table[3].flag= 0x80; // 4ème partition
sr.es=FP_SEG(&mbr);
r.x.bx=FP_OFF(&mbr);
r.x.ax= 0x301; // écriture d'un secteur
r.h.dl= 0x80; // 1er disque
r.x.cx= 1; // 1er sercteur
r.h.dh= 0; // piste 0 et tête 0
int86x(0x13, &r, &r, &sr);
if( r.x.cflag )
return 2;
else
return 0;
}
}
<--- Zoran_8000 --->