Скачиваний:
38
Добавлен:
01.05.2014
Размер:
3.03 Кб
Скачать
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <bios.h>
#include "sysp.h"

// Ќ®¬Ґа д®а¬ вЁа㥬®© ¤®а®¦ЄЁ

#define TRK 20

// Љ®¤ а §¬Ґа  ᥪв®а  - 256 Ў ©в

#define SEC_SIZE 1

union REGS inregs, outregs;
char _far diskbuf[512];
char _far diskbuf1[512];
char buf[80];

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;

	printf("\nЏа®Ја ¬¬  г­Ёз⮦Ёв ᮤҐа¦Ё¬®Ґ"
			 "\n20-© ¤®а®¦ЄЁ ¤ЁбЄ  Ђ:."
			 "\n†Ґ« ҐвҐ Їа®¤®«¦Ёвм? (Y,N)\n");

// Ћ¦Ё¤ Ґ¬ ®вўҐв ®ЇҐа в®а  Ё  ­ «Ё§Ёа㥬 ҐЈ®

	i = getch();
	if((i != 'y') && (i != 'Y')) exit(-1);

// Џ®«гз Ґ¬  ¤аҐб в Ў«Ёжл Ї а ¬Ґва®ў ¤ЁбЄҐвл

	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 = 0x77;
	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);

// ‡ ЇЁблў Ґ¬ Ё­д®а¬ жЁо ў ­Ґбв ­¤ ав­л© ᥪв®а

	printf("\n‚ўҐ¤ЁвҐ бва®Єг ¤«п § ЇЁбЁ ў ­Ґбв ­¤ ав­л© ᥪв®а,"
			 "\n¤«Ё­  бва®ЄЁ ­Ґ ¤®«¦­  ЇаҐўли вм 80 Ў ©в®ў"
			 "\n->");

	gets(buf);
	strcpy(diskbuf,buf);

	di.drive    = 0;
	di.head     = 0;
	di.track    = 20;
	di.sector   = 1;
	di.nsectors = 1;
	di.buffer   = diskbuf;

	status = _bios_disk(_DISK_WRITE, &di) >> 8;

	if(status) {
		printf("\nЋиЁЎЄ  ЇаЁ § ЇЁбЁ ў ­Ґбв ­¤ ав­л© ᥪв®а: %d",
			 status);
		exit(-1);
	}

	di.drive    = 0;
	di.head     = 0;
	di.track    = 20;
	di.sector   = 1;
	di.nsectors = 1;
	di.buffer   = diskbuf1;

	for(i = 0; i < 3; i++) {
		 status = _bios_disk(_DISK_READ, &di) >> 8;
		 if( !status ) break;
	}

	printf("\nЏа®зЁв ­® Ё§ ­Ґбв ­¤ ав­®Ј® ᥪв®а :\n%s\n",
			diskbuf1);

// ‚®ббв ­ ў«Ёў Ґ¬ бв алҐ §­ зҐ­Ёп ў
// в Ў«ЁжҐ Ї а ¬Ґва®ў ¤ЁбЄҐвл

	dpt_ptr->sec_size  = old_sec_size;
	dpt_ptr->fill_char = old_fill_char;
	dpt_ptr->eot       = old_eot;


	exit(0);
}

Соседние файлы в папке TF20