MS-DOS для программиста


Программа FMT81TRK - часть 2


if(dbp == NULL dbp_f == NULL) { printf("\nМало памяти"); return(-1); }

// Получаем текущие параметры диска А: dbp->spec = 0; reg.x.ax = 0x440d; reg.h.bl = 1; reg.x.cx = 0x0860; reg.x.dx = FP_OFF(dbp); segreg.ds = FP_SEG(dbp); intdosx(&reg, &reg, &segreg);

if(reg.x.cflag != 0) { printf("\nОшибка: %d", reg.x.ax); return(-1); }

// Заполняем блок парметров для форматирования dbp->spec = 5;

// Считываем из BPB количество секторов на дорожке sectors = dbp->bpb.seccnt;

// Подготавливаем таблицу, описывающую формат дорожки

// Записываем количество секторов на дорожке dbp->trkcnt = sectors;

// Для каждого сектора на дорожке в таблицу // записываем его номер и размер. for(i = 0; i < sectors; i++) { dbp->trk[i].no = i+1; dbp->trk[i].size = 512; }

// Устанавливаем новые параметры для диска А: reg.x.ax = 0x440d; reg.h.bl = 1; reg.x.cx = 0x0840; reg.x.dx = FP_OFF(dbp); segreg.ds = FP_SEG(dbp); intdosx(&reg, &reg, &segreg);

if(reg.x.cflag != 0) { printf("\nОшибка: %d", reg.x.ax); return(-1); }

// Готовим блок параметров устройства, // который будет использован при вызове // операции проверки возможности форматирования // дорожки dbp_f->spec = 1; dbp_f->head = 0; dbp_f->track = 81;

reg.x.ax = 0x440d; reg.h.bl = 1; reg.x.cx = 0x0842; reg.x.dx = FP_OFF(dbp_f); segreg.ds = FP_SEG(dbp_f); intdosx(&reg, &reg, &segreg);

if(reg.x.cflag != 0) { printf("\nОшибка: %d", reg.x.ax); return(-1); }

// Если указанный формат дорожки поддерживается, // поле специальных функций будет содержать 0. // Проверяем это if(dbp_f->spec != 0) { printf("\nФормат дорожки не поддерживается"); return(-1); }

// Заполняем блок параметров для выполнения // операции форматирования dbp_f->spec = 0; dbp_f->head = 0; dbp_f->track = 81;

// Форматируем дорожку с номером 81, головка 0 reg.x.ax = 0x440d; reg.h.bl = 1; reg.x.cx = 0x0842; reg.x.dx = FP_OFF(dbp_f); segreg.ds = FP_SEG(dbp_f); intdosx(&reg, &reg, &segreg);

if(reg.x.cflag != 0) { printf("\nОшибка: %d", reg.x.ax); return(-1); }

// Освобождаем память farfree(dbp); farfree(dbp_f);

return(0); }




Начало  Назад  Вперед



Книжный магазин