# Foxdisk3 **Repository Path**: macrofun/foxdisk3 ## Basic Information - **Project Name**: Foxdisk3 - **Description**: 随着Foxdisk的编写深入,我越来越不满足Foxdisk2的功能。受限于62个扇区的编程空间,所实现的功能有限。而且由于采用汇编语言编写,开发调试相对困难。由此,我制定了3.0版本的开发计划,核心点在于: 1) 将程序安装于硬盘末端,脱离62扇区(31K代码大小)的限制; 2) 采用C与汇编混合的模式,这样可以借用各种C语言的成熟工具; Foxdisk3就是在这种情况下诞生了。 - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-01-12 - **Last Updated**: 2025-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Foxdisk3 #### 介绍 随着Foxdisk的编写深入,我越来越不满足Foxdisk2的功能。受限于62个扇区的编程空间,所实现的功能有限。而且由于采用汇编语言编写,开发调试相对困难。由此,我制定了3.0版本的开发计划,核心点在于: 1) 将程序安装于硬盘末端,脱离62扇区(31K代码大小)的限制; 2) 采用C与汇编混合的模式,这样可以借用各种C语言的成熟工具; Foxdisk3就是在这种情况下诞生了。 ![Foxdisk3界面](https://images.gitee.com/uploads/images/2021/0919/101359_1c9deee4_791211.png "foxdisk3_3.PNG") 在Foxdisk3中,由于程序空间的扩大(不过还是不够大,使用的是small模式编译,代码段和数据段需要限制在64K以内),可以实现很多功能了。 从下图可以窥见其基本的功能实现: ![Foxdisk功能图](https://images.gitee.com/uploads/images/2021/0919/101740_a831a508_791211.png "foxdisk3_0.PNG") 在其中,分区功能是花费了最大功夫的。我是直接把Spfdisk的代码,解构后移植到Foxdisk3中的。因此,与Foxdisk2阉割了的分区功能不同,Foxdisk3中是有完整的分区能力的。 ![分区](https://images.gitee.com/uploads/images/2021/0919/101919_a26bacac_791211.png "foxdisk3_1.PNG") 出于实用目的,我还提供了硬盘表面检测功能,检测硬盘是否存在坏道: ![坏道检测](https://images.gitee.com/uploads/images/2021/0919/102013_3fdb4c0f_791211.png "foxdisk3_2.PNG") 其他的功能,包括倒计时、系统管理、壁纸管理等,可以在源代码中查看。 #### 软件架构 为便于阅读,我把源代码的架构进行了整理,如下图: ![输入图片说明](https://images.gitee.com/uploads/images/2021/0919/102925_dd0180f4_791211.jpeg "foxdisk3_arch.jpg") 可以看出,除了启动用的Loader.asm和时钟中断管理iTimeint.asm外,以及为了实现32位长整型数(编译器是16位的)运算的iMath.asm外,其余都是C语言源文件。 当然,实际在硬盘访问和图形访问中,使用了BIOS中断,采取的是嵌入汇编的模式。 引入了C语言之后,Foxdisk3的编写快了很多,也刺激我想在其中添加更多的功能。可惜的是,由于采用small方式编译,代码段只有64K,我想实现的诸如虚拟磁盘、鼠标支持、U盘支持等功能,都没办法实现。 在完成Foxdisk3之后不久,我开始学习UEFI了,Foxdisk系列就失去了更新动力了。 #### 安装教程 Foxdisk的安装程序与运行程序是编译在同一文件中的,所以使用比较简单。但在安装的时候,ifox.bmp文件是必须的。 在DOS下,使用如下命令安装: `foxdisk.exe` #### 使用说明 千万不要在有数据的硬盘上做实验,作者不承担数据丢失的责任。尽量用虚拟机或者闲置硬盘安装,我曾经吃过这样的亏,我不希望别人再重复一次。 #### 源码结构 - /tools: ``` +/Disthz: 汉字提取工具 ``` - /documents: 总结的文档