亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? createfs.c

?? format命令的源代碼
?? C
字號:
/*
// Program:  Format
// Version:  0.90
// Written By:  Brian E. Reifsnyder
// Copyright:  2002 under the terms of the GNU GPL, Version 2
// Module Name:  createfs.c
// Module Description:  Functions to create the file systems.
*/

#define CREATEFS


#include <stdlib.h>


#include "bootcode.h"
#include "format.h"
#include "floppy.h"
#include "driveio.h"
#include "btstrct.h"
#include "createfs.h"

void Clear_Reserved_Sectors();
void Create_Boot_Sect_Start();
void Create_Boot_Sect_Ext();
void Create_FS_Info_Sector();
void Get_FS_Info();
void Write_Boot_Sectors();
void Write_FAT_Tables();
void Write_Root_Directory();

unsigned long Create_Serial_Number();

FSI file_sys_info;

void Create_File_System()
{
  Get_FS_Info();

  /* Flush DOS disk buffers. */
  regs.h.ah = 0x0d;
  intdos(&regs,&regs);

  if(debug_prog==TRUE) printf("\n[DEBUG]  Creating File System\n");

  /* Clear reserved sectors. */
  Clear_Reserved_Sectors();

  /* Create boot sector structures. */
  Create_Boot_Sect_Start();
  Create_Boot_Sect_Ext();

  Clear_Sector_Buffer();

  /* *** Add Start of boot sector */
  memcpy(&sector_buffer[0], &bs_start, 11);

  /* *** Add Standard BPB */
  memcpy(&sector_buffer[11], &bpb_standard, 35-11+1);

  /* *** Add FAT32 BPB Extension, if applicable. */
  if(param.fat_type==FAT32)
    {
    memcpy(&sector_buffer[36], &bpb_fat32_ext, 63-36+1);
    }
  /* *** Add Extended boot sector fields. */
  if(param.fat_type!=FAT32) memcpy(&sector_buffer[36], &bs_ext, 61-36+1);
  else                      memcpy(&sector_buffer[64], &bs_ext, 89-64+1);

  /* Add Boot Code */
  if(param.fat_type!=FAT32) memcpy(&sector_buffer[62], &boot_code, 130);
  else                      memcpy(&sector_buffer[90], &boot_code, 130);

  /* Add Flag */
  sector_buffer[510]=0x55;
  sector_buffer[511]=0xaa;

  Write_Boot_Sectors();

  Write_FAT_Tables();

  Write_Root_Directory();

  /* Flush DOS disk buffers so there is not any phantom information in */
  /* the directory.                                                    */
  regs.h.ah = 0x0d;
  intdos(&regs, &regs);
}

void Create_Boot_Sect_Start()
{
  /* Add Jump Instruction */
  if(param.fat_type==FAT12 || param.fat_type==FAT16)
    {
    /* Add instruction for FAT12 & FAT16 */
    bs_start.jmp[0]=0xeb;
    bs_start.jmp[1]=0x3c;
    bs_start.jmp[2]=0x90;
    }
  else
    {
    /* Add instruction for FAT32 */
    bs_start.jmp[0]=0xeb;
    bs_start.jmp[1]=0x58;
    bs_start.jmp[2]=0x90;
    }

  /* Add OEM ID */
  memcpy(&bs_start.oem_id,"FDOS_1.0", 8);
}

void Create_Boot_Sect_Ext()
{
  unsigned long serial_number;

  /* Add Physical Drive Number. */
  if(param.drive_type==FLOPPY) bs_ext.drive_number=0x00;
  if(param.drive_type==HARD)   bs_ext.drive_number=0x80;

  /* Zero reserved field. */
  bs_ext.reserved=0x00;

  /* Add Signature Byte */
  bs_ext.signature_byte=0x29;

  /* Add Serial Number. */
  serial_number=Create_Serial_Number();
  memcpy(&bs_ext.serial_number[0], &serial_number, 4);

  memcpy(&drive_statistics.serial_number_low,&bs_ext.serial_number[0],2);
  memcpy(&drive_statistics.serial_number_high,&bs_ext.serial_number[2],2);

  /* Add Volume Label */
  if(param.v==TRUE)
    {
    memset( &bs_ext.volume_label[0], ' ', 11);
    memcpy( &bs_ext.volume_label[0], param.volume_label, min(11, strlen(param.volume_label)));
    }
  else
    {
    memcpy( &bs_ext.volume_label[0], "NO NAME    ", 11);
    }

  /* Add System ID */
  memcpy(&bs_ext.file_system_type[0],"FAT1",4);

  if(param.fat_type==FAT12) bs_ext.file_system_type[4]='2';
  if(param.fat_type==FAT16) bs_ext.file_system_type[4]='6';
  if(param.fat_type==FAT32) memcpy(&bs_ext.file_system_type[3],"32",2);

  memcpy(&bs_ext.file_system_type[5],"   ",3);
}

void Create_FS_Info_Sector()
{
  static struct
    {
    unsigned long    lead_signature         ;
    char             reserved_1        [480];
    unsigned long    struc_signature        ;
    unsigned long    free_count             ;
    unsigned long    next_free              ;
    char             reserved_2         [12];
    unsigned long    trailing_signature     ;
    } fs_info_sector;

  memset(fs_info_sector, 0, sizeof(fs_info_sector));

  fs_info_sector.lead_signature=0x41615252;
  fs_info_sector.struc_signature    =0x61417272;
  fs_info_sector.free_count         =file_sys_info.total_clusters - 1;
                                     /* 1 cluster used by root directory */
  fs_info_sector.next_free          =0x2;
  fs_info_sector.trailing_signature =0xaa550000;

  memcpy(sector_buffer, &fs_info_sector, 512);

  if(debug_prog) printf("\n[DEBUG]  Writing FS Info Sector->    1\n");
  Drive_IO(WRITE,1,1);

  if(debug_prog) printf("\n[DEBUG]  Writing FS Info Sector->    7\n");
  Drive_IO(WRITE,7,1);

}

static unsigned long cluster_count(void)
{
  unsigned long totalsect;
  
  totalsect = bpb_standard.total_sectors;
  if (totalsect == 0)
    totalsect = ((unsigned long)(bpb_standard.large_sector_count_high) << 16) |
      bpb_standard.large_sector_count_low;

  totalsect -= file_sys_info.start_root_dir_sect;

  if (param.fat_type != FAT32)
    totalsect -= file_sys_info.number_root_dir_sect;

  return totalsect / bpb_standard.sectors_per_cluster;
}

void Get_FS_Info()
{
  file_sys_info.start_fat_sector = bpb_standard.reserved_sectors;

  file_sys_info.number_fat_sectors = bpb_standard.sectors_per_fat;
  if (file_sys_info.number_fat_sectors == 0)
    file_sys_info.number_fat_sectors =
      ((unsigned long)(bpb_fat32_ext.fat_size_high) << 16) |
      bpb_fat32_ext.fat_size_low;

  file_sys_info.start_root_dir_sect =
    (file_sys_info.number_fat_sectors * bpb_standard.number_of_fats) +
    bpb_standard.reserved_sectors;

  if (param.fat_type == FAT32)
    file_sys_info.number_root_dir_sect = 1024u*32/512;
					 /* Pretend there are 1024 entries.
					    This is done to guarantee that
					    enough space is cleared.        */  
  else
    file_sys_info.number_root_dir_sect =
      (bpb_standard.root_directory_entries*32 + bpb_standard.bytes_per_sector - 1) /
      bpb_standard.bytes_per_sector;

  file_sys_info.total_clusters = cluster_count();
}

void Clear_Reserved_Sectors()
{
  int index = 0;

  Clear_Sector_Buffer();

  do
    {
    Drive_IO(WRITE,index,1);

    index++;
    } while(index< file_sys_info.start_fat_sector);
}

unsigned long Create_Serial_Number()
{
  unsigned long serial_number;
  unsigned long serial_number_high;
  unsigned long serial_number_low;
  unsigned long scratch;

  unsigned char month;
  unsigned char day;
  unsigned int year;

  unsigned char hour;
  unsigned char minute;
  unsigned char second;
  unsigned char hundredth;

  asm{
    mov ah,0x2a
    int 0x21

    mov WORD PTR year,cx
    mov BYTE PTR month,dh
    mov BYTE PTR day,dl

    mov ah,0x2c
    int 0x21

    mov BYTE PTR hour,ch
    mov BYTE PTR minute,cl
    mov BYTE PTR second,dh
    mov BYTE PTR hundredth,dl
    }

  serial_number_low = hour;
  serial_number_low = serial_number_low << 8;
  serial_number_low += minute;
  scratch = year;
  serial_number_low += scratch;

  serial_number_high = second;
  serial_number_high = serial_number_high << 8;
  serial_number_high += hundredth;
  scratch = month;
  scratch = scratch << 8;
  scratch += day;
  serial_number_high += scratch;

  serial_number = (serial_number_high << 16) + serial_number_low;

  return serial_number;
}

void Write_Boot_Sectors()
{
  /* Write boot sector to the first sector of the disk */
  if(debug_prog==TRUE) printf("\n[DEBUG]  Writing Boot Sector->    0\n");
  Drive_IO(WRITE,0,1);

  if(param.fat_type==FAT32)
    {
    if(debug_prog==TRUE) printf("\n[DEBUG]  Writing Boot Sector->    %d\n",
                                bpb_fat32_ext.backup_boot_sector);
    Drive_IO(WRITE,bpb_fat32_ext.backup_boot_sector,1);

    Create_FS_Info_Sector();

    /* ** Create 3rd boot sector. */
    Clear_Sector_Buffer();

    /* Add Flag */
    sector_buffer[510]=0x55;
    sector_buffer[511]=0xaa;
    /* Write sectors. */
    Drive_IO(WRITE,2,1);
    Drive_IO(WRITE,8,1);
    }
}

void Write_FAT_Tables()
{
  unsigned long sector;

  /* Configure FAT Tables */
  Clear_Sector_Buffer();
  sector = file_sys_info.start_fat_sector;
  do
    {
    if(debug_prog==TRUE) printf("[DEBUG]  Clearing FAT Sector->  %3d\n",sector);
    Drive_IO(WRITE,sector,1);

    sector++;
    }while(sector< (file_sys_info.start_fat_sector
	     +( 2 * file_sys_info.number_fat_sectors)));

  sector_buffer[0]=drive_specs[param.media_type].media_descriptor;
  sector_buffer[1]=0xff;
  sector_buffer[2]=0xff;

  if(param.fat_type==FAT16) sector_buffer[3]=0xff;

  if(param.fat_type==FAT32)
    {
    sector_buffer[3] =0x0f;
    sector_buffer[4] =0xff;
    sector_buffer[5] =0xff;
    sector_buffer[6] =0xff;
    sector_buffer[7] =0x0f;
    sector_buffer[8] =0xff;
    sector_buffer[9] =0xff;
    sector_buffer[10]=0xff;
    sector_buffer[11]=0x0f;
    }

  if(debug_prog) printf("[DEBUG]  Write FAT Headers To Sector->    %d\n",
                              file_sys_info.start_fat_sector);
  Drive_IO(WRITE,file_sys_info.start_fat_sector,1);

  if(debug_prog) printf("[DEBUG]  Write FAT Headers To Sector->    %d\n",
                        file_sys_info.start_fat_sector +
                        file_sys_info.number_fat_sectors);
  Drive_IO(WRITE,(file_sys_info.start_fat_sector
                  + file_sys_info.number_fat_sectors),1 );
}

void Write_Root_Directory()
{
  int index;
  int root_directory_first_sector;
  int root_directory_num_sectors;
  int space_fill;

  unsigned long sector;

  /* Clear Root Directory Area */
  Clear_Sector_Buffer();
  sector=file_sys_info.start_root_dir_sect;
  root_directory_first_sector=(unsigned)sector;
  root_directory_num_sectors=file_sys_info.number_root_dir_sect;
  do
    {
    if(debug_prog==TRUE) printf("[DEBUG]  Clearing Root Directory Sector->  %3d\n",sector);
    Drive_IO(WRITE,sector,1);
    sector++;
    }while(sector<(root_directory_first_sector+root_directory_num_sectors));

  param.first_data_sector
   = root_directory_first_sector+root_directory_num_sectors+1;

  /* Add Volume Label to Root Directory */
  if(param.v==TRUE)
    {
    Clear_Sector_Buffer();
    sector=file_sys_info.start_root_dir_sect;
    index=0;
    space_fill=FALSE;
    do
      {
      if(param.volume_label[(index)]==0x00) space_fill=TRUE;

      if(space_fill==FALSE) sector_buffer[index]=param.volume_label[(index)];
      else sector_buffer[index]=' ';

      index++;
      }while(index<=10);

    sector_buffer[11]=0x08;

    if(debug_prog==TRUE) printf("[DEBUG]  Writing Volume Label To Root Directory Sector->  %3d\n",sector);
    Drive_IO(WRITE,sector,1);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的av在线播放| 亚洲人一二三区| 亚洲综合成人在线视频| 懂色av一区二区夜夜嗨| 国产婷婷一区二区| 91亚洲精品乱码久久久久久蜜桃| 国产精品久久久久久久久免费相片| 国产女主播一区| 国产在线不卡一区| 亚洲精品欧美在线| 欧美福利视频导航| 国产精品123| 亚洲激情自拍偷拍| 欧美白人最猛性xxxxx69交| 国产精品一区二区无线| 中文字幕欧美一区| 日韩欧美在线网站| 99久久99久久精品国产片果冻| 亚洲国产cao| 欧美极品少妇xxxxⅹ高跟鞋| 欧美视频中文字幕| 成人av中文字幕| 麻豆成人免费电影| 亚洲成a人片综合在线| 久久九九久精品国产免费直播| 欧美日韩国产综合一区二区三区| 国产河南妇女毛片精品久久久| 亚洲午夜久久久久久久久久久| 久久久激情视频| 精品久久国产97色综合| 一区二区三区.www| 日本午夜精品一区二区三区电影| 久久久久久久电影| 日韩一区二区三区观看| 欧美日本一区二区三区| 欧美写真视频网站| 色呦呦日韩精品| 色综合久久综合网| 国产a精品视频| 国产精品小仙女| 国产一区 二区| 国产精品资源在线观看| 国产激情一区二区三区四区| 国产精品影音先锋| 国产一区二区电影| 成人美女在线观看| 9人人澡人人爽人人精品| 高清视频一区二区| av成人免费在线| 91国偷自产一区二区开放时间| 色婷婷国产精品综合在线观看| 91社区在线播放| 欧美三级韩国三级日本三斤| 欧美日本不卡视频| 国产一区二区不卡在线| 精品久久国产老人久久综合| 久久久久久**毛片大全| 国产精品卡一卡二卡三| 一区二区三区四区亚洲| 日韩专区中文字幕一区二区| 捆绑调教美女网站视频一区| 国产高清精品在线| 欧美日韩一区二区三区高清| 精品入口麻豆88视频| 依依成人精品视频| 国产一区二区三区免费播放| 日本精品免费观看高清观看| 日韩一区二区免费在线电影| 亚洲欧洲日本在线| 国产精品久久网站| 久久精品国产99国产| 成人精品视频一区二区三区尤物| 丁香激情综合五月| 风流少妇一区二区| 91精选在线观看| 中文字幕一区二区三区在线不卡| 亚洲在线免费播放| 国产69精品久久久久777| 欧美在线看片a免费观看| 久久综合丝袜日本网| 亚洲免费在线视频| 国产精品一二一区| 91福利精品视频| 国产精品久线在线观看| 国产精品一区二区不卡| 欧美影院一区二区| 精品久久久久久久人人人人传媒 | 日韩欧美一二三区| 一区二区三区加勒比av| 成人综合婷婷国产精品久久蜜臀 | 奇米一区二区三区| 在线看国产一区二区| 69久久夜色精品国产69蝌蚪网| 国产亚洲欧美色| 国产精品一区二区黑丝| 日韩欧美久久一区| 视频在线观看91| 欧美日韩中文字幕一区| 亚洲综合激情网| 欧美亚洲丝袜传媒另类| 一区二区三区毛片| 欧美精品日韩精品| 亚洲图片欧美视频| 欧美三级在线视频| 五月综合激情网| 欧美精品一二三区| 亚洲影视资源网| 欧美浪妇xxxx高跟鞋交| 欧美电影免费观看完整版| 一级中文字幕一区二区| 欧美在线视频全部完| 蜜臀久久99精品久久久久宅男| 欧美tickling网站挠脚心| 国产一区二区电影| 一区二区三区四区高清精品免费观看| 91老师国产黑色丝袜在线| 国产精品久久久久久久久晋中| 99久久婷婷国产综合精品| 日韩一区二区三区在线| 不卡av电影在线播放| 久久99精品久久久久久动态图| 欧美高清视频不卡网| 日韩高清中文字幕一区| 欧美高清在线精品一区| 99re这里都是精品| 精品一二三四区| 国产女同性恋一区二区| 7777精品伊人久久久大香线蕉完整版 | 综合久久给合久久狠狠狠97色| 在线视频国内自拍亚洲视频| 日韩va欧美va亚洲va久久| 国产精品丝袜在线| 3d动漫精品啪啪1区2区免费| 99re这里只有精品6| 国产麻豆欧美日韩一区| 日本成人在线看| 亚洲欧美偷拍三级| 国产午夜精品一区二区三区四区| 国产九九视频一区二区三区| 亚洲色图在线播放| 国产精品青草久久| 国产三级三级三级精品8ⅰ区| 91精品国产91久久久久久一区二区| 精品一区二区在线免费观看| 五月综合激情日本mⅴ| 亚洲一二三区不卡| 亚洲综合图片区| 亚洲一区二区三区四区在线免费观看| 亚洲精品一区二区三区在线观看| 欧美乱妇15p| 日韩欧美国产电影| 精品欧美乱码久久久久久| 精品国产一区二区三区久久久蜜月 | 国产精品网站导航| 国产视频一区二区三区在线观看| 欧美高清精品3d| 色诱视频网站一区| 欧美日韩视频第一区| 制服丝袜成人动漫| 欧美videos中文字幕| 精品久久国产字幕高潮| 国产欧美精品一区aⅴ影院| 久久精品人人爽人人爽| 国产精品第五页| 亚洲精品视频免费看| 五月天亚洲精品| 蜜臂av日日欢夜夜爽一区| 国产一区二区三区国产| 一本高清dvd不卡在线观看| 91亚洲精华国产精华精华液| 91.com在线观看| 国产精品女主播在线观看| 亚洲视频一区二区免费在线观看| 中文字幕精品在线不卡| 亚洲激情五月婷婷| 久久国产日韩欧美精品| 成人免费高清在线| 欧美在线影院一区二区| 日韩欧美国产一区在线观看| 国产精品久久久久国产精品日日| 亚洲国产va精品久久久不卡综合| 国产精华液一区二区三区| 欧美日韩三级一区二区| 中文乱码免费一区二区| 精品伊人久久久久7777人| 国产91丝袜在线18| 久久精品人人做人人综合| 亚洲色图欧美在线| 国产精品羞羞答答xxdd| 精品久久一区二区| 丝袜亚洲精品中文字幕一区| 色一区在线观看| 精品久久人人做人人爱| 日本aⅴ精品一区二区三区| 色噜噜狠狠成人中文综合 | 粉嫩在线一区二区三区视频| 欧美日韩一区二区在线视频| 国产日本亚洲高清| 成人不卡免费av| 亚洲国产日韩在线一区模特|