Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
// ќвг Їа®Ја ¬¬г ¬®¦® § ЇгбЄ вм в®«мЄ® Ё§ Є®¬ ¤®©
// бва®ЄЁ. ЏаЁ § ЇгбЄҐ Ё§ ЁвҐЈаЁа®ў ®© б।л QC
// Ё«Ё PWB ў®§¬®¦Ґ Є®д«ЁЄв б ЁбЇ®«м§гҐ¬л¬ ў нвЁе
// б। е ®Ўа Ў®взЁЄ®¬ ЄаЁвЁзҐбЄЁе ®иЁЎ®Є.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <direct.h>
#include <string.h>
#include <dos.h>
#include <bios.h>
void main(void);
void _far hhandler(unsigned deverr, unsigned doserr, unsigned _far *hdr);
void _bios_str(char *p);
void main() {
// “бв ў«Ёў Ґ¬ ®Ўа Ў®взЁЄ ЄаЁвЁзҐбЄЁе ®иЁЎ®Є
_harderr(hhandler);
// Њ®¤Ґ«Ёа㥬 ЄаЁвЁзҐбЄго ®иЁЎЄг. ‚лЇ®«пҐ¬ Ї®ЇлвЄг ᮧ¤ вм
// Є в «®Ј ¤ЁбЄҐ Ђ:. …б«Ё ¬л "§ Ўг¤Ґ¬" ўбв ўЁвм
// ў ¤ЁбЄ®ў®¤ ¤ЁбЄҐвг, Ўг¤Ґв ўл§ў ®Ўа Ў®взЁЄ
// ЄаЁвЁзҐбЄ®© ®иЁЎЄЁ
printf("\n‚бв ўм⥠(Ё«Ё Ґ ўбв ў«п©вҐ) ¤ЁбЄҐвг ў ¤ЁбЄ®ў®¤ A:"
"\nЁ ¦¬ЁвҐ «оЎго Є« ўЁиг..."
"\n");
getch();
// ‘®§¤ Ґ¬ Є в «®Ј
if(mkdir("a:\test_ctl")) {
printf("\nЋиЁЎЄ ЇаЁ ᮧ¤ ЁЁ Є в «®Ј " );
exit(-1);
}
else {
printf("\n“ᯥ讥 ᮧ¤ ЁҐ Є в «®Ј ");
// “¤ «пҐ¬ в®«мЄ® з⮠ᮧ¤ л© Є в «®Ј
rmdir("a:test_ctl");
exit(0);
}
}
// Ќ®ўл© ®Ўа Ў®взЁЄ ЄаЁвЁзҐбЄЁе ®иЁЎ®Є
void _far hhandler(unsigned deverr, unsigned doserr, unsigned _far *hdr) {
int ch;
static char buf[200], tmpbuf[10];
// ‚лў®¤Ё¬ б®®ЎйҐЁҐ ® ЄаЁвЁзҐбЄ®© ®иЁЎЄҐ
sprintf(buf,"\n\r"
"\n\rЉ®¤ ®иЁЎЄЁ гбва®©вбў : %04.4X"
"\n\rЉ®¤ ®иЁЎЄЁ DOS: %d"
"\n\r\n\r"
"\n\r‚лЇ®«пҐ¬лҐ ¤Ґ©бвўЁп:"
"\n\r 0 - Ї®ўв®аЁвм"
"\n\r 1 - ®в¬ҐЁвм"
"\n\r 2 - § ўҐаиЁвм"
"\n\r----> ?",
deverr,
doserr);
_bios_str(buf);
// ‚ў®¤Ё¬ ®вўҐв б Є« ўЁ вгал
ch = _bios_keybrd(_KEYBRD_READ) & 0x00ff;
_bios_str("\n\r");
switch(ch) {
case '0': // Џлв Ґ¬бп Ї®ўв®аЁвм ®ЇҐа жЁо
default:
_hardresume(_HARDERR_RETRY);
case '2': // ‡ ўҐаи Ґ¬ а Ў®вг Їа®Ја ¬¬л
_hardresume(_HARDERR_ABORT);
case '1': // ‚®§ўа в ў DOS б Є®¤®¬ ®иЁЎЄЁ
_hardretn(doserr);
}
}
// Џа®Ја ¬¬ ¤«п ўлў®¤ бва®ЄЁ бЁ¬ў®«®ў нЄа
// б Ї®¬®ймо дгЄжЁЁ BIOS 0Eh
void _bios_str(char *ptr) {
union REGS inregs, outregs;
char *start = ptr;
inregs.h.ah = 0x0e;
for(; *ptr; ptr++) {
inregs.h.al = *ptr;
int86(0x10, &inregs, &outregs);
}
}