一个疯狂的漏洞:20世纪70年代英特尔8271磁盘芯片吃掉了我的数据

2020-06-24 05:37:24

如果你一定要遭受数据丢失的痛苦,那么至少要确保你从这次经历中收集了一个好故事!最近,我一直喜欢通过玩复古的软件和硬件来保持我内在的工程师的敏锐。我对BBC Micro的软盘驱动器和老式软盘保护特别感兴趣。BBC Micro有两个不同的流行软驱控制器:较旧的Intel8271和较新的Western Digital 1770/1772。这两个控制器具有不同的功能,并且按桶负载计算异常!

我的数据丢失是在试验Intel8271时发生的,Intel8271是20世纪70年代的芯片和设计。它的尺寸很好,穿起来有点热。

互联网上关于这种芯片的信息不多,但有一份相当不错的数据表,其中包括关于复位寄存器的描述:

毫无疑问,正是我的安全背景促使我阅读此说明,然后立即将值100(而不是1或0)写入此寄存器。

正是在这一点上,我的驱动力着魔了。重试表明,仅通过写入值4来设置位D2就足以引起恶魔感染:

不同的驱动器行为不同。这个驱动器,一个较老的单头Chinon F-051MD似乎激活了它的所有部件:头部剧烈摆动,马达有时旋转。我的新款三菱驱动器发出可怕的、可怕的高音尖叫声。这是我最喜欢的硬盘,我不想再听到那种声音,所以没有视频。

这就是事情变得疯狂的地方:当我第一次这样做的时候,我的Chinon驱动器中有一张光盘,驱动器上的数据变成了烤面包……。尽管存在硬件写保护选项卡。

确实如此。这够离奇的了,值得一查!当恶作剧出现时,软驱会收到什么信号?提醒一下,BBC Micro使用的是Shugart风格(不是PC风格!)。与驱动器的连接:

从控制器到驱动器,我们有Select 0、Select 1、Not DIR(步骤方向)、针脚20(步骤;在上面的维修手册图表中没有标注)、Write/Data(写入/数据)、Write/Enable(写入/启用)、Side/SELECT(侧/选择)。要对其中几个进行采样,请执行以下操作:

从控制器到驱动器的其他针脚上也有类似的信号--它们不正常!以375 kHz的频率打开和关闭马达并不是预期的控制器行为,甚至可能对马达不利;我不知道。

光盘损坏来自上面写使能引脚上的异常信号。这就是控制器请求驱动器为其写头加电的方式,并且驱动器被要求以300+kHz的频率这样做。在步进和步进方向销上也有这些疯狂的信号之一,所以驱动器在被要求激活写头的同时,在整个磁道范围内都在寻找。不太好。

对我们来说,这里的控制器出错可能是合理的。在数据手册第8-124页的写保护标题下,显示当此输入引脚有效时,8271将不会写入磁盘。当驱动器发出写保护信号时,此合同明显被违反。

但这里面还有更多的东西!大多数软驱也有最后一道防线。例如,我的Mitubishi MF503B驱动器的应用笔记清楚地指出";当写保护磁盘插入驱动器时,此信号变为‘0’。即使写入门处于活动状态,写入也会被禁止。";我的Chinon驱动器似乎在大多数情况下都是正确的,但在存在剧烈振荡信号的情况下却并非如此。似乎存在竞争条件(如果在写使能门已经激活的情况下选择了驱动器),其中在注意到写保护条件之前,将有一位电流流过写头。

互联网上没有太多关于英特尔8271的信息。这是一个稍老一点的软盘控制器芯片,产于20世纪70年代。它的一些功能暗示了80年代已经退役的设计品味和方向。例如,芯片能够使用主机存储器DMA在磁盘扇区内异步扫描任意字节字符串。也许是大型机时代的遗物?英国广播公司的微型机没有使用它。DMA功能根本没有连线。

据我所知,上世纪80年代没有其他家用电脑使用过8271。有充分的理由不这么做。可能最重要的是,8271不支持双密度(又名)。MFM,西部数据1770/1772年就是这样做的。因此,使用8271会降低存储容量。尽管1770年的机器变得很普遍,BBC Micro仍然忍受着这种轰动。商业软件需要在所有机器上运行,包括基于8271的机器。

我怀疑8271可能是基于Intel MCS-48微控制器。有几件事是一致的,比如设计和制造的日期。但在提供的API中也有线索。";读/写特殊寄存器";命令特别有用:

如您所见,有很多特殊的寄存器,只有相当少的几个记录在案。记录的最高索引为0x22,或十进制为34。

一种理论是读/写专用寄存器简单地读取或写入存在于8048(或变体)中的64字节RAM中的一个。有大量证据表明,大多数特殊的寄存器索引似乎都有作用。例如,寻道和建立时序参数最终保存在特殊寄存器0x0D和0x0E中,即使在任何地方都没有记录。同样未记录的0x1D似乎是正式数据寄存器的镜像。诸若此类。

如果8048理论成立,也许复位寄存器的未记录和疯狂位对应于测试模式之一,单步模式或外部存储器访问模式?

如果您对8271的实际架构有任何了解或记忆,或者有未记录行为的详细信息,请与我们联系!