Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <bios.h>
#include "sysp.h"
// Ќ®¬Ґа д®а¬ вЁа㥬®© ¤®а®¦ЄЁ
#define TRK 20
// Љ®¤ а §¬Ґа ᥪв®а - 512 Ў ©в
#define SEC_SIZE 2
union REGS inregs, outregs;
char _far diskbuf[512];
void main(void);
void main(void) {
struct diskinfo_t di;
unsigned status;
unsigned char old_sec_size, old_fill_char, old_eot;
int i, j;
DPT _far *dpt_ptr;
// Џ®«гз Ґ¬ ¤аҐб в Ў«Ёжл Ї а ¬Ґва®ў ¤ЁбЄҐвл
dpt_ptr = get_dpt();
// ‘®еа 塞 бв алҐ § зҐЁп Ё§ в Ў«Ёжл Ї а ¬Ґва®ў
old_sec_size = dpt_ptr->sec_size;
old_fill_char = dpt_ptr->fill_char;
old_eot = dpt_ptr->eot;
// “бв ў«Ёў Ґ¬ ў в Ў«ЁжҐ Ї а ¬Ґва®ў ¤ЁбЄҐвл
// Є®¤ а §¬Ґа ᥪв®а , бЁ¬ў®« § Ї®«ҐЁп ЇаЁ
// д®а¬ вЁа®ў ЁЁ, Є®«ЁзҐбвў® ᥪв®а®ў ¤®а®¦ЄҐ
dpt_ptr->sec_size = SEC_SIZE;
dpt_ptr->fill_char = 0xf8;
dpt_ptr->eot = 15;
// “бв ў«Ёў Ґ¬ вЁЇ ¤ЁбЄ
inregs.h.ah = 0x17;
inregs.h.al = 3;
inregs.h.dl = 0;
int86(0x13, &inregs, &outregs);
// “бв ў«Ёў Ґ¬ б।㠤«п д®а¬ вЁа®ў Ёп
inregs.h.ah = 0x18;
inregs.h.ch = TRK;
inregs.h.cl = dpt_ptr->eot;
inregs.h.dl = 0;
int86(0x13, &inregs, &outregs);
// Џ®¤Ј®в ў«Ёў Ґ¬ Ї а ¬Ґвал ¤«п дгЄжЁЁ д®а¬ вЁа®ў Ёп
di.drive = 0;
di.head = 0;
di.track = TRK;
di.sector = 1;
di.nsectors = 15;
di.buffer = diskbuf;
// Џ®¤Ј®в ў«Ёў Ґ¬ ЎгдҐа д®а¬ в ¤«п 15-⨠ᥪв®а®ў
for(i=0, j=1; j<16; i += 4, j++) {
diskbuf[i] = TRK;
diskbuf[i+1] = 0;
diskbuf[i+2] = j;
diskbuf[i+3] = SEC_SIZE;
}
// ‚л§лў Ґ¬ дгЄжЁо д®а¬ вЁа®ў Ёп ¤®а®¦ЄЁ
status = _bios_disk(_DISK_FORMAT, &di) >> 8;
printf("\n”®а¬ вЁа®ў ЁҐ § ўҐаиЁ«®бм б Є®¤®¬: %d",status);
// ‚®ббв ў«Ёў Ґ¬ бв алҐ § зҐЁп ў
// в Ў«ЁжҐ Ї а ¬Ґва®ў ¤ЁбЄҐвл
dpt_ptr->sec_size = old_sec_size;
dpt_ptr->fill_char = old_fill_char;
dpt_ptr->eot = old_eot;
}