提交 c9db04f0 创建 作者: 赵鹏翀's avatar 赵鹏翀

Initial commit

上级
/Debug
/Release
\ No newline at end of file
用于创建mkfloppy项目
\ No newline at end of file
#include <memory.h>
#include <stdio.h>
#define BUFFER_SIZE 2048
#define SECTOR_SIZE 512 // 软盘扇区大小
#define SETUP_SEC 4 // setup.bin 所占用的扇区数
#define SYS_SIZE 0x3000 // system 模块所占用空间的节数量。一个节为 16 个字节,即 0x3000 * 16 = 192KB
unsigned char ucBuffer[BUFFER_SIZE];
/*
*三个文件在软盘中的扇区分布图*
+-----------------------------------------------+
| | | |
| bootsect | setup | system |
| | | |
+-----------------------------------------------+
扇区: 0 1-4 5-388
*/
int main(int argc, char* argv[])
{
// 这里必须是 5
if(5 != argc)
{
printf("mkfloppy parameter error. \nUsage: mkfloppy.exe bootsect setup system.\n");
return 1;
}
//
// 打开软盘镜像文件
//
FILE *pFloppyFile = fopen(argv[4], "wb");
if (NULL == pFloppyFile)
{
printf("Createing %s failed\n", argv[4]);
return 1;
}
//
// 读取第一个文件 bootsect.bin,并写入软盘镜像的第 0 扇区
//
FILE *pBootSectFile = fopen(argv[1], "rb");
if (NULL == pBootSectFile)
{
printf("Unable to open %s file\n", argv[1]);
fclose(pFloppyFile);
return 1;
}
fread(ucBuffer, sizeof(unsigned char), SECTOR_SIZE, pBootSectFile);
int iNum = fwrite(ucBuffer, sizeof(unsigned char), SECTOR_SIZE, pFloppyFile);
printf("%s 被成功写入 %s! 一共写入 %d 字节 \n", argv[1], argv[4], iNum);
fclose(pBootSectFile);
//
// 读取第二个文件 setup.bin,并写入软盘的第 1 - 4 扇区
//
// 将缓冲区清空
memset(ucBuffer, 0, BUFFER_SIZE);
FILE *pSetupFile = fopen(argv[2], "rb");
if (NULL == pSetupFile)
{
printf("Unable to open file %s \n", argv[2]);
fclose(pFloppyFile);
return 1;
}
fread(ucBuffer, sizeof(unsigned char), BUFFER_SIZE, pSetupFile);
iNum = fwrite(ucBuffer, sizeof(unsigned char), BUFFER_SIZE, pFloppyFile);
printf("%s 被成功写入 %s! 一共写入 %d 字节\n", argv[2], argv[4], iNum);
fclose(pSetupFile);
//
// 读取第三个文件 linux011.bin,并写入软盘的第 5 - 388 扇区
//
FILE *pSystemFile = fopen(argv[3], "rb");
if(NULL == pSystemFile)
{
printf("Unable to open file %s \n", argv[3]);
fclose(pFloppyFile);
return 1;
}
int i;
for ( i=0; (iNum = fread(ucBuffer, sizeof(unsigned char), BUFFER_SIZE, pSystemFile)) > 0; i += iNum)
fwrite(ucBuffer, sizeof(unsigned char), iNum, pFloppyFile);
printf("%s 被成功写入 %s! 一共写入 %d 字节\n", argv[3], argv[4], i);
fclose(pSystemFile);
fclose(pFloppyFile);
return 0;
}
<?xml version="1.0" encoding="gb2312"?>
<OSLProject Version="1.00" Name="mkfloppy" SubjectID="1580a23c-aa04-4cf3-8cca-488dc577df8d" IncrementalUpload="0">
<Configurations>
<Configuration Name="Debug" PreDebugCommand="">
<Tool Name="PreBuildEventTool"/>
<Tool Name="CustomBuildTool"/>
<Tool Name="GCCCompilerTool" PreprocessorDefinitions="_DEBUG" GenerateDebugInformation="-1" AdditionalOptions="-std=c99"/>
<Tool Name="NASMAssemblerTool"/>
<Tool Name="PreLinkEventTool"/>
<Tool Name="GCCLinkerTool" OutputFile="$(OutDir)\mkfloppy.exe"/>
<Tool Name="PostBuildEventTool"/>
</Configuration>
<Configuration Name="Release">
<Tool Name="PreBuildEventTool"/>
<Tool Name="CustomBuildTool"/>
<Tool Name="GCCCompilerTool" PreprocessorDefinitions="NDEBUG" AdditionalOptions="-std=c99"/>
<Tool Name="NASMAssemblerTool"/>
<Tool Name="PreLinkEventTool"/>
<Tool Name="GCCLinkerTool" OutputFile="$(OutDir)\mkfloppy.exe"/>
<Tool Name="PostBuildEventTool"/>
</Configuration>
</Configurations>
<Files>
<Filter Name="ͷļ" Filter="h;hpp;hxx">
</Filter>
<Filter Name="Դļ" Filter="cpp;c;cc;cxx">
<File RelativePath=".\main.c">
</File>
</Filter>
</Files>
</OSLProject>
添加文件
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论