⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wrboot.c

📁 boot loader bing--boot.asm for fdd and loader c++ -startup.asm
💻 C
字号:
#include <string.h> /* memset() */
/* FILE, SEEK_..., fopen(), fseek(), ftell(), fread(), fclose(), printf() */
#include <stdio.h>
#include <bios.h> /* biosdisk() */

#define	BUF_SIZE	512
/*****************************************************************************
*****************************************************************************/
int main(int arg_c, char *arg_v[])
{
	unsigned char buf[BUF_SIZE], tries;
/*	char *outfile_name = "A:\\LOADER.BIN"; */
	FILE *infile;/*, *outfile;*/
	long len;
	int err;

/* usage */
	if(arg_c < 2)
	{
		printf("Writes first 512 bytes of file to floppy boot "
			"sector\n");
/*			"sector,\nthen writes the rest to file %s\n",
			outfile_name); */
		return 1;
	}
/* open input file */
	infile = fopen(arg_v[1], "rb");
	if(infile == NULL)
	{
		printf("Can't open input file '%s'\n", arg_v[1]);
		return 1;
	}
/* get length */
	fseek(infile, 0, SEEK_END);
	len = ftell(infile);
	fseek(infile, 0, SEEK_SET);
/* check length */
	if(len < BUF_SIZE)
	{
		printf("Warning: short file. Boot sector will be padded "
			"with zeroes\n");
/*			"with zeroes and file %s won't be written\n",
			outfile_name); */
	}
/* read bootsector */
	memset(buf, 0, sizeof(buf));
	fread(buf, 1, BUF_SIZE, infile);
/* write it */
	for(tries = 3; tries != 0; tries--)
	{
		err = biosdisk(/* _DISK_WRITE */3, /* drive */0, /* head */0,
			/* track */0, /* sector */1, /* nsects */1, buf);
		if(err == 0x11)
			err = 0;
		if(err == 0)
			break;
		(void)biosdisk(/* _DISK_RESET */0, /* drive */0,
			0, 0, 1, 1, buf);
	}
	if(err != 0)
	{
		printf("Error 0x%X writing boot sector\n", err);
		return 1;
	}
/* open output file
	if(len > BUF_SIZE)
	{
		outfile = fopen(outfile_name, "wb");
		if(outfile == NULL)
		{
			printf("Can't open output file '%s'\n", outfile_name);
			return 1;
		}
		do
		{
			err = fread(buf, 1, BUF_SIZE, infile);
			if(err >= 0)
				fwrite(buf, 1, err, outfile);
		} while(err > 0);
		fclose(outfile);
		if(err < 0)
		{
			printf("Error writing file '%s'\n", outfile_name);
			return 1;
		}
	}*/
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -