完成 fdmake 第一个版本

生成了 img 用 WinImage 打开正常。添加 FreeLdr 的 FAT.BIN 作为 BOOT,然后加入 FREELDR.SYS 和 FREELDR.INI 可以正确引导 FreeLdr 界面。
目前代码写的很凌乱,更有大部分内容没有完善,至于 Bug 可能不是一点点。呵呵。
但总归可以使用了。

弟弟回来休假

又没有搞到机票,只好再次在火车上辗转回来。
这次是年后,比上次年前回来应该好些吧。
一晃弟弟都上班的第二个春节了。
我咧,第七个了~~
现在,又开始我的操作系统编码历程。

一个软盘映象文件分析示例

首先是 62 个字节的信息内容:

00000000: EB 58 90  ;jmp 58h nop 跳转到 0000005Ah (当前 02h + 58h) 然后一个空指令
00000003: XX XX XX XX XX XX XX XX  ;OEM名称,8 个字符
0000000B: 00 02  ;200h = 512 扇区字节大小
0000000D: 01  ;每簇一个扇区
0000000E: 01 00  ;保留扇区只有零扇区 1 个
00000010: 02  ;默认有 2 个 FAT 表
00000011: E0 00  ;E0h = 224 根目录项目数
00000013: 40 0B  ;B40h = 2880 扇区总数
00000015: F0  ;软盘类型
00000016: 09 00  ;FAT 占用扇区数
00000018: 12 00  ;12h = 18 磁道扇区数
0000001A: 02 00  ;磁头数
0000001C: 00 00 00 00  ;隐藏(坏)扇区数,新磁盘为0
00000020: 00 00 00 00  ;FAT32 使用
00000024: 00  ;MS-DOS 使用
00000025: 00  ;Windows NT 使用
00000026: 29  ;附加 BOOT 标志,29h
00000027: XX XX XX XX  ;卷标序列号,双字
0000002B: XX XX XX XX XX XX XX XX XX XX XX  ;卷标 11 字节,空格补零
00000036: 46 41 54 31 32 20 20 20 ;"FAT12   " 文件系统名称,空格补零
一点点缓冲字节(为与 FAT32 信息兼容而保留,可以不需要)
0000003E: 00 00
00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000050: 00 00 00 00 00 00 00 00 00 00
开头处的 jump 跳到此处开始执行
0000005A: XX XX XX XX XX XX
...
000001F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
代码只能到这里,零扇区(512 字节 200h)最后两个字节为 BOOT 标志
000001FE: 55 AA  ;BOOT 标志
下面是第一个 FAT 表
00000200: F0 FF FF FF 0F 00 00 00 00 00 00 00 00 00 00 00
...
000013F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
该 FAT 表大小为 1400h - 0200h = 1200h = 4608
对于 FAT12 每个项目 1.5 字节就是 4608 / 1.5 = 3072 项
需要注意的是 FAT 表第一个字节存放的是媒体信息,即软盘类型
与 0000:0015h 中存放的内容一样(F0h)。
为了保持 FAT12 表的一直性,附加了两个 FFh 字节。
那么,文件数据是用第三个簇 02h 开始。
内容为:FFFh-000h-...-000h
文件数据在第三个簇(02h)为 FFFh 没有后续簇。
从第四个簇开始均为 000h 表示空簇,未使用。
00001400: F0 FF FF FF 0F 00 00 00 00 00 00 00 00 00 00 00
...
000025F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
这是备份 FAT 表,与上一个完全一样。
大小 2600h - 1400h = 1200h = 4608
下面是 ROOT 根目录项目,每个 32 字节
00002600: 54 45 53 54 20 20 20 20 54 58 54  ;"TEST    TXT" 文件名,8.3 格式
0000260B: 00  ;文件属性
0000260C: 10  ;NT 保留 10?
0000260D: 07  ;文件创建毫秒 7 * 5 = 35
0000260E: D4 9E  ;创建时间 9ED4h -> 1001 1110 1101 0100 -> 10011 110110 10100 -> 19:54:40(20*2)
00002610: 51 32  ;创建日期 3251h -> 0011 0010 0101 0001 -> 0011001 0010 10001 -> 2005(25+1980)/2/17
00002612: 00 00  ;最后访问时间
00002614: 00 00  ;第一个簇的高地址
00002616: DC 9E  ;最后修改时间 9EDCh -> 1001 1110 1101 1100 -> 10011 110110 11100 -> 19:54:56
00002618: 51 32  ;最后修改日期 3251h -> 0011 0010 0101 0001 -> 0011001 0010 10001 -> 2005(25+1980)/2/17
0000261A: 02 00  ;第一个簇的低地址,即簇地址为 0000:0002h FAT 表显示无后续簇(FFFh)
0000261C: 0F 00 00 00  ;文件大小 0Fh = 15 字节
一个目录项完毕,下一个目录项 DirName[0] 为 00 表示是空项目
并且在其之前也没有其他的有内容的项目
00002620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
000041F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
根目录项目共 4200h - 2600h = 1C00h = 7168 字节 = 224 * 32
下面是文件数据区,与 FAT 表对应,注意这是第三个簇(02h)
00004200: 54 68 69 73 20 69 73 20 61 20 74 65 73 74 2E 00 This is a test.
00004210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
000043F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
第四个簇(03h)开始
00004400: F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6
...
00167FF0: F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6
文件数据区大小为 168000h - 4200h = 163E00h = 1457664 = 2847 * 512
磁盘总计大小为 168000h = 1474560 = 2880 * 512 = 1.44M

FAT12 简介

一个 FAT12 文件系统软盘映象分为四个部分:引导扇区(零扇区),文件分配表 FAT,根目录项目,文件数据。
启动扇区是 BIOS 所需要的,位于文件系统的最开始部分,即第一个扇区。准确的说 BIOS 只要求扇区结尾两个字节为 55h 和 AAh 就确定该设备可以引导,并从扇区开头位置执行代码。
(更多…)

心情不好

昨晚一回来就在折腾电脑,结果今早一开电脑,硬盘出问题,顿时头大。去找眼镜,结果镜架折了,再一弄,就断了。
没法子,只好去配眼镜。本来就没钱,还是花了四百块,好像比折断的眼镜便宜些。最庆幸的是眼镜度数没变高。
不管怎样,整天的心情就不怎么样了。发现自己很情绪化,一点点什么就会让自己想东想西。自己太容易被影响了。晚上只是妈妈回来为了眼镜罗嗦几句,都好烦好烦。

删掉了几篇日志,把关于自己的内容移到心情下面。

2.14 情人节

一个人从老家急匆匆的回到武汉。路上遇见好多花车,因为今天是情人节,阴历也是正月初六,好日子。特别是回乡的新人们,可以在老家招呼亲朋好友。
不过,天气倒是很坏。稀稀拉拉下了一天的雨,还愈来愈大。
好像这个年就是这样子的。两次回去,两次都在下雪。
而我咧。爸妈晓得浅浅的存在,回去以后就少了往年催我的惯例,多了些旁敲侧击。时不时被他们问上几句,我依旧往昔的迷糊混过。
大人们始终有他们的打算,最终还是被小舅妈逮住,说了一个晚上。好像曾经听人说过这样的经历,所以自己再遇到就晓得你不依从下这个意见,就没法子让你睡觉了。
口里是答应了,自己其实什么都不知道。连说的什么,现在也难得记起什么来。
好像从过年来,就和浅浅一点联系都没有了。。。
外面好大的雨,屋里就我一个人,电视机在客厅里响着。今年再也没有听没有情人的情人节。
今天是公元二○○五年二月十四日。

めぞん一刻

终于看完相聚一刻了,花了一个多月的时间看完了一部历时五年的爱情卡通剧。
对于五代那样的拖拖拉拉、那样的没用、那样的一无是处,自己也无话可说。
同一屋檐下整整生活了四年才看见春天的气息,第二年所送的圣诞礼物居然是前一年买下的。
其实从那时起,天平已经开始倾斜。但直到九十集,所看见的仍然是暧昧的相处。
所以,羡慕的是他们生活在一刻馆,有着三个好邻居(五代:--!),还有三鹰和小津江,以及八神这个小MM,正是她的敢爱敢恨,让响子做出了选择。
还有五代的年轻,可以很隐晦很隐晦的说上一句,等我大学毕业,找个好工作。响子也可以光明正大回答:请努力加油!
🙂 突然想起来,响子再结婚的时候,正好二十七岁吧。呵呵。

BTW: 昨天是 Sheth 的生日,再两个月就是浅浅的生日了。

2.2

好像和11.11相对的日子。
有点不真实的感觉。
和浅浅真的恋爱了么?