Contents Of Boot Sector 
2 
3 
4 
1 
6 5 
7 
11 
8 
10 
9 
12 
13 14 15 
16 
17 
18 
Boot Parameters 
Disk Bootstrap 
Program 
SSiiddee 00,, TTrraacckk 00
Description 
Boot Parameters 
Jump Instruction 3 
360 
Kb 
1.2 
Mb 
1.44 
Mb 
No. 
of 
bytes 
EB3490 
MSDOS5.0 
System ID 8 
No. of bytes/sector 2 512 512 512 
No. of sectors/cluster 1 2 1 1 
No. of sectors in reserved area 2 1 1 1 
No. of copies of FAT 1 2 2 2 
Max. no. of root dir. entries 2 112 224 224 
Total no. of sectors 2 720 2400 2880 
Media descriptor 1 FD F9 F0 
No. of sectors/FAT 2 2 7 9 
No. of sectors/track 2 9 15 18 
No. of sides 2 2 2 2 
No. of hidden sectors 2 0 0 0
Reading Boot Sector 
No. of 
Description bytes 
Jump Instruction 
System ID 
Bytes/sector 
Sectors/cluster 
Sectors in 
reserved area 
Copies of FAT 
Max. root dir. entries 
Total no. of 
sectors Media 
descriptor 
Sectors/FAT 
Sectors/track 
Sides 
3821212212222 
main( ) 
{ 
struct boot 
{ 
char jump[ 3 ] ; 
char sysid[ 8 ] ; 
int bps ; 
c .h. ar spc ; 
char rest[ 482 ] ; 
} ; 
struct boot b ; 
printf ( ”Insert disk, 
Press any key ) ; 
getch( ) ; 
.a b. sread ( 0, 1, 0, &b ) ; 
} 
BBPP 
DDBBPP 
Side 0, 
Trk 0, 
Sec1 
Side 0, 
Trk 0, 
Sec1
# include ”dos.h” 
main( ) 
{ 
struct boot 
{ 
char jump[ 3 ] ; 
char sysid[ 8 ] ; 
int bps ; 
char spc ; 
. . 
} ; 
struct boot b ; 
absread ( 0, 1, 0, &b ) ; 
for ( i = 0 ; i <= 2 ; i++ ) 
printf ( ”%X”, ) ; 
b.jump[ i ] 
for ( i = 0 ; i <= 7 ; i++ ) 
printf ( ”%c”, b.sysid[ i ] 
) ; 
printf ( ”Bytes/sector = %d”, b.bps ) ; 
printf ( ”Sectors/cluster = %d”, b.spc ) ; 
} 
int i ; 
......CCoonntt
In General 
absread (drive no., no. of sectors to read, 
sector from where reading should begin, buffer ) 
absread ( 0, 1, 0, &b ) ; ; 
ROM - BIOS DOS 
S0, T0, S1 
Every sector referred using 
side, track, sector 
Drive A - 0 
Drive B - 1 
Drive C - 128 
D. r i v e D . - 1 2 9. . . . 
LSN 0 
LSN 36 
Every sector referred using 
LSN 
Drive A - 0 
Drive B - 1 
Drive C - 2 
D. r i v e D . - 3. . . . 
S0, T1, S1
What Is 
It? Description 
1.44 Mb Disk 
Jump Instruction 
System ID 
Bytes/sector 
Sectors/cluster 
Sectors in 
reserved area 
Copies of FAT 
Max. root dir. entries 
Total no. of 
sectors Media 
descriptor 
Sectors/FAT 
Sectors/track 
Sides 
Obtained 
Values 
Typical 
Values 
EB3490 
IBM 3.3 
512 
1 
1 
2 
224 
2880 
F0 
9 
18 
2 
0 
102 
…. 
20480 
0 
1 
-24 
0 
2048 
7 
-2 
0 
0 
8 
BP 
DBS 
Virus
BBPP 
DDBBSS 
Anti-Viral 
LLSSNN 5500 
# include ”dos.h” 
char a[ 512 ] ; 
printf ( ”Insert infected disk, Press any key” ) ; 
absread ( 0, 1, 50, a ) ; 
0, 1, 0, a ) ; 
} 
((V ( ( 
main( ) 
{ 
getch( ) ; 
abswrite (
Better... 
#include ”dos.h” 
main( ) 
{ 
char a[ 512 ] ; char ch = ’y’ ; 
char *names[ ] = { ”O Jerusalem”, ”Yankee Doodle”, 
”Robinson Cruso”, ”Eddie Murphy”, ... } ; 
printf ( ”Insert uninfected disk, Press any key” ) ; 
getch( ) ; 
absread ( 0, 1, 0, a ) ; 
while ( ch = = ’y’ ) 
{ 
printf ( ”Insert infected disk, Press any key” ) ; 
getch( ) ; 
abswrite ( 0, 1, 0, a ) ; 
printf ( ”Another disk y/n” ) ; 
} ch = getche( ) ; 
}
Directory Sector 
DDiirreeccttoorryy 
SSeevveerraall eennttrriieess,, eeaacchh ooff 3322--bbyytteess 
Description Size 
Filename 
Extension 
Attribute 
Reserved for Future use 
Time 
Date 
Starting Cluster number 
Size 
8 bytes 
3 bytes 
1 byte 
10 bytes 
2 bytes 
2 bytes 
2 bytes 
4 bytes 
( (
# include ”dos.h” 
main( ) 
{ 
Printing Directory 
struct entry 
{ 
char n[ 8 ] ; char ext[ 3 ] ; 
char unused[ 17 ] ; 
} ; long int size ; 
struct entry e[ 1 6 ] ; 
printf ( ”Insert disk, Press any key” ) ; getch( ) ; 
absread ( 0, 1, 19, e ) ; 
for ( i = 0 ; i <= 15 ; i++ ) 
{ 
for ( j = 0 ; j <= 7 ; j++ ) 
printf ( ”%c”, e[ i ].n[ j ] ) ; 
for ( j = 0 ; j <= 2 ; j++ ) 
printf ( ”%c”, e[ i ].ext[ j ] ) ; 
} 
} 
printf ( ”%ld”, e[ i ].size ) ;

Vcs24

  • 1.
    Contents Of BootSector 2 3 4 1 6 5 7 11 8 10 9 12 13 14 15 16 17 18 Boot Parameters Disk Bootstrap Program SSiiddee 00,, TTrraacckk 00
  • 2.
    Description Boot Parameters Jump Instruction 3 360 Kb 1.2 Mb 1.44 Mb No. of bytes EB3490 MSDOS5.0 System ID 8 No. of bytes/sector 2 512 512 512 No. of sectors/cluster 1 2 1 1 No. of sectors in reserved area 2 1 1 1 No. of copies of FAT 1 2 2 2 Max. no. of root dir. entries 2 112 224 224 Total no. of sectors 2 720 2400 2880 Media descriptor 1 FD F9 F0 No. of sectors/FAT 2 2 7 9 No. of sectors/track 2 9 15 18 No. of sides 2 2 2 2 No. of hidden sectors 2 0 0 0
  • 3.
    Reading Boot Sector No. of Description bytes Jump Instruction System ID Bytes/sector Sectors/cluster Sectors in reserved area Copies of FAT Max. root dir. entries Total no. of sectors Media descriptor Sectors/FAT Sectors/track Sides 3821212212222 main( ) { struct boot { char jump[ 3 ] ; char sysid[ 8 ] ; int bps ; c .h. ar spc ; char rest[ 482 ] ; } ; struct boot b ; printf ( ”Insert disk, Press any key ) ; getch( ) ; .a b. sread ( 0, 1, 0, &b ) ; } BBPP DDBBPP Side 0, Trk 0, Sec1 Side 0, Trk 0, Sec1
  • 4.
    # include ”dos.h” main( ) { struct boot { char jump[ 3 ] ; char sysid[ 8 ] ; int bps ; char spc ; . . } ; struct boot b ; absread ( 0, 1, 0, &b ) ; for ( i = 0 ; i <= 2 ; i++ ) printf ( ”%X”, ) ; b.jump[ i ] for ( i = 0 ; i <= 7 ; i++ ) printf ( ”%c”, b.sysid[ i ] ) ; printf ( ”Bytes/sector = %d”, b.bps ) ; printf ( ”Sectors/cluster = %d”, b.spc ) ; } int i ; ......CCoonntt
  • 5.
    In General absread(drive no., no. of sectors to read, sector from where reading should begin, buffer ) absread ( 0, 1, 0, &b ) ; ; ROM - BIOS DOS S0, T0, S1 Every sector referred using side, track, sector Drive A - 0 Drive B - 1 Drive C - 128 D. r i v e D . - 1 2 9. . . . LSN 0 LSN 36 Every sector referred using LSN Drive A - 0 Drive B - 1 Drive C - 2 D. r i v e D . - 3. . . . S0, T1, S1
  • 6.
    What Is It?Description 1.44 Mb Disk Jump Instruction System ID Bytes/sector Sectors/cluster Sectors in reserved area Copies of FAT Max. root dir. entries Total no. of sectors Media descriptor Sectors/FAT Sectors/track Sides Obtained Values Typical Values EB3490 IBM 3.3 512 1 1 2 224 2880 F0 9 18 2 0 102 …. 20480 0 1 -24 0 2048 7 -2 0 0 8 BP DBS Virus
  • 7.
    BBPP DDBBSS Anti-Viral LLSSNN 5500 # include ”dos.h” char a[ 512 ] ; printf ( ”Insert infected disk, Press any key” ) ; absread ( 0, 1, 50, a ) ; 0, 1, 0, a ) ; } ((V ( ( main( ) { getch( ) ; abswrite (
  • 8.
    Better... #include ”dos.h” main( ) { char a[ 512 ] ; char ch = ’y’ ; char *names[ ] = { ”O Jerusalem”, ”Yankee Doodle”, ”Robinson Cruso”, ”Eddie Murphy”, ... } ; printf ( ”Insert uninfected disk, Press any key” ) ; getch( ) ; absread ( 0, 1, 0, a ) ; while ( ch = = ’y’ ) { printf ( ”Insert infected disk, Press any key” ) ; getch( ) ; abswrite ( 0, 1, 0, a ) ; printf ( ”Another disk y/n” ) ; } ch = getche( ) ; }
  • 9.
    Directory Sector DDiirreeccttoorryy SSeevveerraall eennttrriieess,, eeaacchh ooff 3322--bbyytteess Description Size Filename Extension Attribute Reserved for Future use Time Date Starting Cluster number Size 8 bytes 3 bytes 1 byte 10 bytes 2 bytes 2 bytes 2 bytes 4 bytes ( (
  • 10.
    # include ”dos.h” main( ) { Printing Directory struct entry { char n[ 8 ] ; char ext[ 3 ] ; char unused[ 17 ] ; } ; long int size ; struct entry e[ 1 6 ] ; printf ( ”Insert disk, Press any key” ) ; getch( ) ; absread ( 0, 1, 19, e ) ; for ( i = 0 ; i <= 15 ; i++ ) { for ( j = 0 ; j <= 7 ; j++ ) printf ( ”%c”, e[ i ].n[ j ] ) ; for ( j = 0 ; j <= 2 ; j++ ) printf ( ”%c”, e[ i ].ext[ j ] ) ; } } printf ( ”%ld”, e[ i ].size ) ;