/
* File : src\makeimg\makeimg.c
* Purpose : This tools is used to make a runable image on bochs virtual disk
* Date : 2004.8.13
*
/

#include
#include
#include

void die(char * str)
{
fprintf(stderr,“%s\n”,str);
exit(1);
}

void usage(void)
{
die(“Usage: build bootsect setup system [rootdev] [> image]”);
}

int main(int argc, char ** argv)
{
unsigned char pBuf[2048];
int i;

<font color='#008000' >// Open the bootsect.bin and read them into a buffer</font>  
FILE * fpsrc = fopen(<font color='#ff00ff' >&#8220;bootsect.bin&#8221;</font>, <font color='#ff00ff' >&#8220;rb&#8221;</font>);

<font color='#0000ff' >if</font> (fpsrc == 0)  
{  
    die(<font color='#ff00ff' >&#8220;Can not open bootsect.bin&#8221;</font>);  
}

<font color='#008000' >// read file</font>  
<font color='#0000ff' >if</font> (fread(pBuf, 512, 1, fpsrc) != 1)  
{  
    fclose(fpsrc);  
    die(<font color='#ff00ff' >&#8220;Can not read the bootsect.bin&#8221;</font>);  
}

<font color='#008000' >// close file</font>  
fclose(fpsrc);

<font color='#008000' >// open the image to write</font>  
FILE * fp = NULL;  
<font color='#0000ff' >if</font> (argc == 1)        <font color='#008000' >// default floopy</font>  
{  
    fp = fopen(<font color='#ff00ff' >&#8220;..\\emu\\a.img&#8221;</font>, <font color='#ff00ff' >&#8220;wb&#8221;</font>);  
}  
<font color='#0000ff' >else</font>  
{  
    fp = fopen(<font color='#ff00ff' >&#8220;..\\emu\\c.img&#8221;</font>, <font color='#ff00ff' >&#8220;wb&#8221;</font>);  
}

<font color='#0000ff' >if</font> (fp == 0)  
{  
    die(<font color='#ff00ff' >&#8220;Can not open bootsect.bin&#8221;</font>);  
}

<font color='#008000' >// seek first</font>  
rewind(fp);

<font color='#0000ff' >if</font> (fwrite(pBuf, 512, 1, fp) != 1)  
{  
    fclose(fp);  
    die(<font color='#ff00ff' >&#8220;can not write file&#8221;</font>);  
}

<font color='#008000' >// open the setup.bin</font>  
fpsrc = fopen(<font color='#ff00ff' >&#8220;setup.bin&#8221;</font>, <font color='#ff00ff' >&#8220;rb&#8221;</font>);

<font color='#0000ff' >if</font> (fpsrc == 0)  
{  
    die(<font color='#ff00ff' >&#8220;Can not open setup.bin&#8221;</font>);  
}

<font color='#008000' >// read file</font>  
<font color='#0000ff' >if</font> (fread(pBuf, 2048, 1, fpsrc) != 1)  
{  
    fclose(fpsrc);  
    die(<font color='#ff00ff' >&#8220;Can not read the setup.bin&#8221;</font>);  
}

<font color='#008000' >// close file</font>  
fclose(fpsrc);


<font color='#0000ff' >if</font> (fwrite(pBuf, 2048, 1, fp) != 1)  
{  
    fclose(fp);  
    die(<font color='#ff00ff' >&#8220;can not write file&#8221;</font>);  
}

<font color='#008000' >// fit the buffer</font>

memset(pBuf, 0, 512);

<font color='#0000ff' >if</font> (argc == 1)        <font color='#008000' >// default, write floopy</font>  
{  
    <font color='#0000ff' >for</font> (i = 0; i < 2875; i++)  
    {  
        fwrite(pBuf, 512, 1, fp);  
        fflush(fp);  
    }  
}  
<font color='#0000ff' >else</font>            <font color='#008000' >// hard drive</font>  
{  
    <font color='#0000ff' >for</font> (i = 0; i < 20155; i++)  
    {  
        fwrite(pBuf, 512, 1, fp);  
        fflush(fp);  
    }  
}  
<b

r /> fclose(fp);

printf(<font color='#ff00ff' >&#8220;image created\n&#8221;</font>);

&nb

sp; return 0;
}

各位观众不用读,上面的代码没有多大意思。只是为了试一下从网上下载的这个小程序。以前一直就觉得blogcn的日志格式控制太差,好好的排版到了这里就变成了Plain text,那个可视化编辑又非常慢,不稳定,还麻烦,很早就想自己动手写一个小程序,可以把代码格式化成UBB或者HTML,这样发到论坛上也不会丢失格式。
昨天在网上闲逛,发现了一个不错的小工具,“老罗代码着色器”::URL::http://www.luocong.com/myworks/zipped/SCC/SCC.zip作者似乎是个比我大不了几岁的程序员哥哥。程序支持C, C++, asm,对我来说正合适。省了我自己Coding了。
想想自己,其实平时也有不少自认为好的想法和创意,但是被付诸实践的少之又少。实在是精力有限,这就不禁又让我想起了现代的软件工程。
软件产业发展了几十年了,比尔盖茨和保罗艾伦两个人写DOS,丹尼斯里奇和肯汤姆普森两个人开发UNIX的时代已经一去不复返了,软件变得越来越复杂,越来越庞大,单单凭借一个人的力量,越来越难以完成高质量的软件。软件的个人英雄主义时代慢慢的结束了。
或许这会让一些技术崇拜者觉得伤感(我也有点),但是往长远宏观的角度来看,这说明计算机软件作为一个产业正在日趋走向成熟。那第二次工业革命飞机制造做个类比,莱特兄弟当年靠两个人的力量就可以制作出一架简易的飞机,但是现在的空中客车,747等等,岂是一两个公司可以单独制作得出来的,记得小时候在政治书上看到的资料:一架波音需要很多公司协同分工合作。当然,今天的两个机械高手仍然可以合作制作出简单的飞机,但是这种“飞机”不会有任何的市场价值。莱特和盖茨都可以算得上是一个产业的奠基人。以机械制造产业为鉴,我觉得软件产业跟机械制造业走的是同样的一条路线。大胆的猜一下,信息产业真的成熟之后,程序员们就应当而且必然会像机械制造业的流水线装配工人一样,不会也不应该享受今天的高薪。真正有价值的,是那些设计新型飞机的人。
还有一个比较“反动”的想法,阻碍今天的软件产业发展的一个重要因素,今天的程序员们的素质都太高了。本科生和研究生占了这个群体的绝大多数。有太多的人都是有文化有理想有抱负有远见的有志青年。工作之后急着实现自己的远大理想,而现实往往是在公司里面的工作离他们的志向相差很远,这样就导致了一些程序员怨天尤人,导致了这个行业跳槽率居高不下。而我觉得,对产业而言,一个软件工程师,最基本的一点,就是“踏实”二字。随着技术的发展和经验的成熟,软件产业的分工可以得到进一步的完善,这样就有望可以降低软件工程师的知识要求,本科生干的工作能不能让专科生干,没有多少文化的农民工经过一段培训能不能干软件。虽然现在提起来比较可笑,但是与机械制造业的技工相比,不是没有可能。当一个产业的人员比例呈现金子塔状,那么这个产业就可以日趋稳定了。
这样,才可以代码着色,给软件着色,给信息产业着色。