/*Функция для изменения параметров DBR */
Recover_with_values()
{
int val =0;
/* Jump Code of 3 Bytes For Floppy */
b.code[0] = 0xEB;
b.code[1]= 0x3E;
b.code[2]= 0x90 ;
/* System Id of 8 Bytes */
strcpy(b.system_id, "+05PSIHC");
/* Bytes Per Sector = 512 */
b.bytes_per_sec = 512;
/* Sector per Cluster for 1.44M 3.5" Floppy = 1 */
b.sec_per_clus = 1;
/* Number of Reserved Sectors = 1 */
b.res_sec =1;
/* Number of FAT Copies = 2 */
b.fat_copies =2;
/* Number of Root Directory Entry = 224 */
b.root_dir_entry =224;
/* Number of Sectors on Disk = 2880 */
b.no_sects =2880;
/* Media Descriptor Byte For Floppy = F0 (H) */
b.format_id =0xF0;
/* Sectors Per FAT = 9 */
b.sec_per_fat =9;
/* Sectors Per Track = 18 */
b.sec_per_trk =18;
/* Number of Sides = 2 */
b.no_sides =2;
/* Number of Special Reserved Sectors (or Hidden
Sectors) = 0 */
b.no_sp_res_sect =0;
/* Use For Floppy Disk*/
val = abswrite ( 0, 1, 0, &b ) ;
if ( val == -1 )
{
printf ( "\n Disk Write Error...bad sector\n" ) ;
printf ( " Disk was not Recovered." ) ;
exit ( 1 ) ;
}
return 0;
}
display_info()
{
printf ( "\n Jump Code (Hex) = %X%X%X (H)\n",
b.code[0],b.code[1],b.code[2]);
printf ( " System ID = %s\n",
b.system_id ) ;
printf ( " Bytes per sector = %d\n",
b.bytes_per_sec ) ;
printf ( " Sectors per cluster = %d\n",
b.sec_per_clus ) ;
printf ( " Reserved sectors = %d\n",
b.res_sec ) ;
printf ( " FAT copies = %d\n",
b.fat_copies ) ;
printf ( " Root directory entries = %d\n",
b.root_dir_entry ) ;
printf ( " No. of sectors on disk = %u\n",
b.no_sects ) ;
printf ( " Media Descriptor Byte = %X\n",
b.format_id ) ;
printf ( " Sectors per FAT = %d\n",
b.sec_per_fat ) ;
printf ( " Sectors per track = %d\n",
b.sec_per_trk ) ;
printf ( " No. of sides = %d\n",
b.no_sides ) ;
printf ( " No. of reserved sectors = %d\n",
b.no_sp_res_sect ) ;
return 0;
}
Замечания по кодированию :
Структура загрузки используется для доступа DBR для чтения и записи параметров диска. Display_info функция (), выводит различные параметры дисков, чтение DBR. Recover_with_values функция () используется для изменения и восстановления параметров по DBR Надежность.
Значений используется функция Recover_with_values (), предназначены для параметров 1,44, 3 ½ дюйма дискете в DBR. Описание этих ценностей были приведены в таблице с учетом следующего :
ValueСтоимости |
DescriptionОписание |
b.code[0] = 0xEB ;b.code [0] = 0xEB;
b.code[1] = 0x3E ;b.code [1] = 0x3E;
b.code[2] = 0x90 ;b.code [2] = 0x90; |
Jump Code of 3
Bytes For specified Floppy, has been given EB 3E
90 (H)Перейти кодексом 3 Bytes Для
указанных Надежность, прозвучала 90 EB
3E (H) |
strcpy(b.system_id," +05PSIHC ");strcpy (b.system_id
", PSIHC +05"); |
System Id of 8
Bytes.Системные Id 8 байтов. It is
calculated with current date and time of the system,
however almost anything works.Она рассчитывается
с текущей датой и времени, пусть даже почти все
работает. |
b.bytes_per_sec
= 512 ;b.bytes_per_sec = 512; |
Bytes Per
Sector = 512Байтов на сектор = 512 |
b.sec_per_clus
= 1 ; b.sec_per_clus = 1; |
Number of
Sectors per Cluster for 1.44M 3.5" Floppy is 1Число Секторов на Кластер для
1.44M 3,5 "Дисковод гибких дисков - 1 |
b.res_sec = 1 ;b.res_sec = 1; |
Number of
Reserved Sectors = 1Количество
Зарезервировано секторов = 1 |
b.fat_copies
= 2 ;b.fat_copies = 2; |
Number of FAT
Copies = 2Количество Копии FAT = 2 |
b.root_dir_entry
= 224 ;b.root_dir_entry = 224; |
Number of Root
Directory Entries for the specified floppy disk = 224Количество корневых записей в
каталоге для указанной дискеты = 224 |
b.no_sects
= 2880 ;b.no_sects = 2880; |
Number of
Sectors on Disk = 2880Количество
секторов на диске = 2880 |
b.format_id = 0xF0 ;b.format_id = 0xF0; |
Media
Descriptor Byte For the specified Floppy = F0 (H)СМИ Эо Байт Для указанного
дисковода гибких = F0 (H) |
b.sec_per_fat = 9 ;b.sec_per_fat = 9; |
Number of
Sectors Per FAT = 9Количество
секторов на FAT = 9 |
b.sec_per_trk = 18 ;b.sec_per_trk = 18; |
Number of
Sectors Per Track = 18Количество
секторов на пути = 18 |
b.no_sides
= 2 ;b.no_sides = 2; |
Number of Sides
= 2Количество сторон 2 = |
b.no_sp_res_sect
= 0 ;b.no_sp_res_sect = 0; |
Number of
Special Reserved Sectors (or Hidden Sectors) = 0Количество специальных защищены
Sectors (секторы или скрытых) = 0 |
|
|
|
|