tomas-nestorovic/RIDE
GitHub: tomas-nestorovic/RIDE
一款支持从磁通级别到文件系统层面的软盘数据访问、恢复与镜像转换工具。
Stars: 82 | Forks: 0
# 简介
- 是的,它可以访问您 PC 上的内部软驱。
- 是的,它可以_直接_与 KryoFlux 协作(从 1.6 版本开始也支持直接写入)。
- 是的,它可以_直接_与 Greaseweazle 协作。
- 是的,经确认这款 Windows XP 应用程序可以通过 Wine 在 Linux 上运行(参见[此常见问题解答](http://nestorovic.hyperlink.cz/ride/html/faq_linux.html))。
# 介绍(即“原因与用途”)
这一切始于 2014 年春天,出于一个我已经记不清的原因,我想在现代 PC 上访问 8 位 ZX Spectrum 计算机克隆机(品牌为 _Didaktik_)的 3.5 英寸软盘。我之前就知道这是可能的,因为我见过(并使用过)几种专为 PC 设计的特殊实用程序,用于创建 Atari ST、CP/M 等系统的软盘镜像。这些实用程序的界面很差(如果有的话),而且在如何操作文件方面可能性非常有限(它们更像是一些转储工具,而不是磁盘浏览器)。我知道存在 [OmniFlop](http://www.shlock.co.uk/Utils/OmniFlop) 这个工具用于……嗯,我不知道——由于奇怪(尽管免费)的许可问题以及作者不回复我的电子邮件许可请求,我从未成功运行过它。但据我所知,它应该只是另一个纯粹的转储工具。我知道存在 [SamDisk](http://simonowen.com/samdisk) 工具,在那之前我一直在使用它,因为它在创建软盘镜像方面提供了精细的可能性,包括那些_重度加密保护的_!
我喜欢 OmniFlop 能够桥接数十种磁盘操作系统软盘格式的想法,尽管它并不真正理解这些格式(回想一下,它是一个转储工具)。我也喜欢 SamDisk 清晰的用法以及它处理甚至是受复制保护的软盘的能力。我喜欢那些专用工具,它们可以(以或多或少繁琐的方式)通过_理解_软盘内容来提取“其”软盘上的文件。于是我自问:_有人已经把所有这些东西结合在一起了吗?_ 如果有,很遗憾我没找到这样的应用程序。
# 真实与虚拟磁盘编辑器 (RIDE)
由于我尝试的每个应用程序都缺少我需要的东西,我创建了自己的工具并将其命名为 _Real and Imaginary Disk Editor_(或简称 _RIDE_)。它用于直接访问遗留平台的文件系统,包括曾经非常流行的 MS-DOS。这些文件系统既可以存储在物理软盘上,也可以存储在镜像文件中(因此得名“真实与虚拟”)。RIDE 既适合特定平台的新手用户,也适合专家用户。新手用户会发现它易于上手进行早期实验,而专家用户则会欣赏其促进直接数据修改和恢复的高级功能。如果您需要的 DOS 尚未实现,您至少可以在扇区级别访问软盘,或者自己实现它,然后理想地将结果提交到本仓库,以便我们都能从您的努力中受益。

# 从底层开始
现在谈谈它是如何工作的。对数据的访问可以从_磁通_级别开始,既可以通过[支持的设备](https://nestorovic.hyperlink.cz/ride/html/faq_realFdd.html)(如 KryoFlux 或 Greaseweazle V4.x),也可以通过能够表示磁通的磁盘镜像(如 KF Streams、SuperCard Pro 或 HxC2001)。我在 RIDE 中实现了几种解码算法,用于从磁性记录中提取 0 和 1(请注意,这些实际上不是我的发明——从其他地方采用,并在算法名称中注明了作者)。每种算法都有不同的速度和鲁棒性比例,因此适用于数据中不同程度的损坏(例如,快速算法能很好地解密良好的信号,但当信号中出现“意外”时更有可能失败)。
可以通过在 _Track Map_(磁道映射)选项卡中右键单击磁道来查看最低级别,如下图所示。

# 处理扇区数据
从磁通中提取出 0 和 1 后,必须对二进制数据进行_解码_以发现磁道的结构。RIDE 目前仅支持广泛的 MFM 编码,但其他编码即将推出。到达这一步的另一种方法是打开带有或不带有显式磁道布局的镜像。
_Track Map_ 选项卡显示打开磁盘的结构,可能包含磁盘上发生的真实时序。通过右键单击磁道或扇区,您可以导航到该磁道或扇区以十六进制模式查看其内容、重新扫描磁道,或最终“挖掘”磁道。

“挖掘”是一个通过暴力操作恢复损坏数据的操作的 fancy 名称。您设置挖掘目标(例如,所有 DOS 标准扇区必须是健康的,如本段下方的图像所示)以及如何达到目标的方法。目前只有一种方法,即重复读取错误磁道,直到最终满足目标。尽管真的很简单,但这方法让我挽救了许多磁盘上的数据——我启动挖掘,腾出双手(以及所有时间)来调整驱动器磁头的压力、位置和/或软盘角度。直到突然间挖掘结束,我就知道我成功保存了该磁道!

# 磁盘操作系统
了解了磁道的结构后,RIDE 会尝试识别扇区。首次打开磁盘时,我称之为_识别序列_列表中的每个磁盘操作系统 (DOS) 都会尝试处理磁盘,看看“扇区是否看起来熟悉”。然后,RIDE 使用序列中第一个“觉得磁盘熟悉”的 DOS 来中介对存储数据的访问。当然,识别序列是可以调整的([参见常见问题解答](https://nestorovic.hyperlink.cz/ride/html/faq_recognition.html))。
RIDE 中 DOS 实现的策略([参见常见问题解答](https://nestorovic.hyperlink.cz/ride/html/faq_supportedSystems.html)) 是对用户不隐瞒任何信息:引导扇区、FAT 项、目录项、隐藏文件、文件属性和其他信息全都供您使用。

# 写入
到目前为止,我主要介绍了读取功能。然而,操作流程也可以逆转,RIDE 可以成为磁盘创建者。实际上有两种方式让它创建磁盘——通过自定义组合或通过转储现有磁盘。
创建具有自定义内容的磁盘意味着 (1) 使用一种已实现的 DOS 格式化磁盘([参见常见问题解答](https://nestorovic.hyperlink.cz/ride/html/faq_formatFloppy.html)),(2) 将文件/目录拖放到 _File Manager_ 选项卡中,(3) 专家用户会发现创作磁盘的其余部分很有趣(引导扇区、非标准磁道布局、目录调整等),以及 (4) 按下 _Disk → Save_ 保存所有修改([参见常见问题解答](https://nestorovic.hyperlink.cz/ride/html/faq_saveFloppy.html))。RIDE 最终会深入到磁通级别将每个磁道写入新磁盘,名副其实地处理真实或虚拟的磁盘。

转储是创建磁盘的第二种方式。像我这样的收藏档案员的典型场景是将真实磁盘作为源,将合适的镜像磁盘作为目标([参见常见问题解答](https://nestorovic.hyperlink.cz/ride/html/faq_floppy2image.html))。然而,源和目标的组合并不受限制,您几乎可以将任何东西转储到其他任何东西中——自然地,只要后者能包含前者的所有特性。这使 RIDE 成为一种独特的镜像转换器([参见常见问题解答](https://nestorovic.hyperlink.cz/ride/html/faq_convertImage.html))。

# 总结
在这里,我想指出 RIDE 可以为您的复古计算考古提供的一些亮点:
- 它试图在自由软件领域弥合经典的“导入/导出应用程序”与数据恢复工具之间的差距。
- 它会自动识别[磁盘操作系统](https://nestorovic.hyperlink.cz/ride/html/faq_supportedSystems.html) (DOS) 和相应的磁盘格式,无需用户干预(尽管用户可以介入)。只需插入磁盘,通过 RIDE 访问它,即可立即开始处理文件。
- 它支持本地连接的[各种真实设备](https://nestorovic.hyperlink.cz/ride/html/faq_realFdd.html),例如 KryoFlux 或 Greaseweazle。
- 它不对磁道布局做假设——甚至非标准磁道也可以被读取/写入/格式化。
- 它不试图向您隐瞒给定文件系统中可用的任何信息——甚至关键值也供您使用(查找 _Advanced_ 部分;如果您把它们弄乱了,不幸的是_您_自己修复它们)。
- 它允许您至少浏览、编辑并最终转储不受支持的文件系统的扇区。
- 它支持 Windows 下的高 DPI 屏幕(无模糊)。
- 它是可移植的,系统要求极低,并且不依赖于第三方库——Windows 原生库就是您所需的全部(因此我最旧的测试环境是 1990 年代带有 MMX 处理器、80 MB RAM 并运行 Windows XP 的台式机)。
- 它[可以在 Linux 中运行](https://nestorovic.hyperlink.cz/ride/html/faq_linux.html)。
# 编译与运行(永远无需安装!)
RIDE 需要 Visual Studio 2010 或更高版本进行编译,需要 Windows XP 或更高版本运行。克隆仓库后,只需在选择了 _Debug_ 或 _Release_ 配置的情况下点击 _Build → Build Solution_,就这样了。
第三个 _Release MFC 4.2_ 配置实际上仅供我使用——我用它在此 GitHub 上创建新的公开版本。要使用此配置进行编译,您需要安装 _Windows SDK_(其中包含旧版 MFC 4.2 平台的所有源代码和库),加上正确设置的路径。然而,既然有 _Release_ 配置,与在 _Release MFC 4.2_ 配置下编译相关的负担是不值得的,所以我不会详述细节。
# 常见问题解答
这里只是_真正_常见的问题列表。完整列表可以通过 _Help → FAQ_ 或[在此在线访问](http://nestorovic.hyperlink.cz/ride/html/faq.html)。
- [支持哪些文件系统?](http://nestorovic.hyperlink.cz/ride/html/faq_supportedSystems.html)
- [如何访问真实软盘?](http://nestorovic.hyperlink.cz/ride/html/faq_accessFloppy.html)
- [如何创建真实软盘的镜像?](http://nestorovic.hyperlink.cz/ride/html/faq_floppy2image.html)
- [如何将镜像转储回软盘?](http://nestorovic.hyperlink.cz/ride/html/faq_image2floppy.html)
- [如何格式化真实软盘?](http://nestorovic.hyperlink.cz/ride/html/faq_formatFloppy.html)
- [如何将一种镜像转换为另一种?](http://nestorovic.hyperlink.cz/ride/html/faq_convertImage.html)
# 贡献
您可以通过两种方式做出贡献:要么_给我改进建议_(如果您发现了错误或想要新功能),要么_实现一个您觉得自己是专家的 DOS_(您了解磁盘的结构、文件如何存储在其中、如何最终调整文件系统、如何验证磁盘是否完整等)。
标签:Atari ST, CP/M, Greaseweazle, KryoFlux, MS-DOS, Windows工具, Wine, ZX Spectrum, 互操作性, 低级访问, 复古计算, 存档工具, 扇区读写, 数据恢复, 文件系统, 硬件接口, 磁盘工具, 磁盘编辑, 磁盘镜像, 端点可见性, 软盘, 软驱, 遗留系统