1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Компиляция Программы

Тема в разделе "С и С++", создана пользователем Barraga, 26 дек 2012.

  1. Barraga

    Barraga Гость

    Репутация:
    0
    Добрый вечер форумчане, прога ругается на компиляцию в C++Builder 6.

    Программа форматирует двадцатую дорожку диска, создавая на ней сектора размером 256 байтов. После форматирования программа записывает в первый сектор нестандартной дорожки строку, введенную с клавиатуры. Затем для контроля содержимое этого сектора считывается и отображается на экране.

    Код:
    #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%sn",
    diskbuf1);
    
    // Восстанавливаем старые значения в
    // таблице параметров дискеты
    
    dpt_ptr->sec_size = old_sec_size;
    dpt_ptr->fill_char = old_fill_char;
    dpt_ptr->eot	  = old_eot;
    
    exit(0);
    }
     
Загрузка...
Похожие Темы - Компиляция Программы
  1. Dr.Lafa
    Ответов:
    6
    Просмотров:
    799
  2. anna
    Ответов:
    3
    Просмотров:
    395
  3. radiomilit
    Ответов:
    1
    Просмотров:
    1.954
  4. Witaw
    Ответов:
    6
    Просмотров:
    2.915
  5. koka278
    Ответов:
    0
    Просмотров:
    1.352

Поделиться этой страницей