Comments on Program coding:
In this program coding, basically we are proceeding to perform the following these tasks step by step:
- Static character data buffer dbuf[512] is provided the information of 512 bytes in hexadecimal system, which is to be written in the first sector of unreadable floppy. dbuf[512] tells the computer during the operation that what information is to be written in the first sector of floppy. (See the Next Program)
- dinfo points to the diskinfo_t structure that contains the information of parameters required by the operation performed by the _bios_disk function.
- As we are going to write the information on the first sector of the disk therefore the location of the sector will be as follows:
Parameter |
What it means |
dinfo.drive = 0x00 |
It indicates the drive 0 that is floppy disk drive (a:) |
dinfo.head = 0 |
It points to head number 0 |
dinfo.track = 0 |
It points to track 0 |
dinfo.sector = 1 |
First sector of the floppy that is sector 1 |
dinfo.sector = 1 |
Number of sectors to consider for write operation = 1 |
dinfo.buffer = dbuf |
Data buffer for the operation |
- Initialize the disk system using the interrupt 13H (function 00h) where regs.h.ah = 0x00 points to the function 00 H and regs.h.dl = 0x00 is used for a: floppy. And int86(0x13, ®s, ®s) invokes MS-DOS interrupt service INT 13 H.
- _bios_disk(_DISK_WRITE, &dinfo) writes the boot information from the specified file to the first (specified) sector of the floppy disk.
The status returned is stored in result that is used to display the message for successful operation or to display an error message on the screen if any error occurs.
Storing the boot Image in HEXADECIMAL Characters to use in our previous Program
It will be a very difficult job to write all 512 the characters of floppy’s DOS Boot Record manually in hexadecimal system without any error in the program we recently discussed. If we can write it accurately even than it will be a difficult and time taking task to do this. Let us use some tricky mind to store the data for data buffer dbuf[512] in a file.
We know that in C programming the hexadecimal characters are represented with 0x such that if hexadecimal character is A9 H, we shall write this in our C program as 0xA9. Our next program is doing the same. It will store the data that we need to write in our previous program, as the data of data buffer dbuf[512].
|