2007年5月11日星期五

写软盘 引导扇区的工具


1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/uio.h>
4 #include <unistd.h>
5 #include <fcntl.h>
6 #include <sys/stat.h>
7 int
8 main(int argc,char *argv[])
9 {
10 struct stat img_file;
11
12 char boot_buf[512];
13 int i;
14 for(i=0;i<511;i++){
15 boot_buf[i]=0x00;
16 }
17 int img_fd, boot_fd;
18
19 if(argc!=3){
20 printf("USAGE:./write boot_file img_file\n");
21 }
22
23 boot_fd = open(argv[1], O_RDONLY);
24 img_fd = open(argv[2], O_RDWR);
25 fstat(img_fd,&img_file);
26 if((argc==3)&&(img_file.st_size!=1474560))
27 {
28 printf("WARNING:floppy image size is NOT 1474560 \n");
29 }
30 read(boot_fd, boot_buf, 510);
31 close(boot_fd);
32 boot_buf[510] = 0x55;
33 boot_buf[511] = 0xaa;
34 lseek(img_fd, 0, SEEK_CUR);
35 write(img_fd, boot_buf, 512);
36 close(img_fd);
37
38 exit(0);
39 }
36

2007年5月8日星期二

创建可引导软盘映象文件

$dd if=/dev/zero of=./fdsize.img bs=512 count=2880
2880+0 records in
2880+0 records out
1474560 bytes transferred in 0.018691 secs (78891179 bytes/sec)

精确地说 一个软盘映象共有1474560 个 bytes

2007年5月4日星期五

Vim 7 碎碎念

标签页
:tabnew开新标签
gt在标签间切换
:tabdo命令可以在所有打开的标签页上执行命令
:tabp和: tabn分别切换到前一个或下一个标签
使用:tabr和:tabl切换到第一个或最后一个标签

ctags + taglist
下载taglist.vim 放在 vim70/plugin里面
由于FreeBSD ports安装的ctags已经包含ctags及Exuberant ctags,taglist需要Exuberant ctags,执行文件是exctags而不是ctags,所以需要修改taglist.vim
在"if !exists('loaded_taglist')"前加一行
let Tlist_Ctags_Cmd = "/usr/local/bin/exctags"
在~/.vimrc添加亦可
生成tags文件:exctags -R *
输入:Tlist即可

OMNI补全

for c 的

在 ~/vimrc 里加入 set omnifunc=c
生成tags文件:exctags -R *
打开文件编辑
按下“CTRL-X CTRL-O”,在VIM的状态行会显示“Omni Completeion”,表明现在进行的是全能补全,同时会弹出一个下拉菜单,显示所有匹配的标签。
如果补全处于激活状态,可以用"CTRL-E"停止补全并回到原来录入的文字。用"CTRL-Y"可以停止补全,并接受当前所选的项目。

word_complete插件
Insert模式下在输入的时候自动补全单词,如果补全正确
可以按Tab键接受,否则可以不管它继续输入或者按Ctrl-n,
Ctrl-p切换补全。注意是输入三个字符后才开始补全。
下载word_complete.vim 放在 vim70/plugin里面
在~/.vimrc中加入
let g:WC_min_len=3 " 大于3个字母才自动补全
:autocmd BufEnter * call DoWordComplete() " 每个buffer自动启用自动补全