我现在正在使用 CP/M 2.2 在 8 位 Z80 计算机上进行编程(作为一种爱好),软盘格式是 IBM,40 个磁道,每个磁道 8 个扇区,每个扇区 512 字节。磁盘每个面的可用空间为 154 Ko。
为什么扇区的索引为 1 到 8(而不是像计算机中通常所见的那样为 0 到 7)?
软盘的目录位于1号磁道(1至4扇区,64个条目)。
我想知道目录是否在零轨道上?
零磁道是否保留给包含的系统(因为磁道 0 和 1 是为 CP/M 软盘上的系统保留的,而目录位于磁道 2 上)?
我问这个问题是因为,例如在 APPLE II 上,扇区从零开始(0 到 F)。
我使用的计算机是 AMSTRAD CPC 6128(1985 年)。它是 8 位计算机,配备 Zilog Z-80,并有 CP/M OS 2.2 和 3.0 可用。
软盘格式非常罕见:3 英寸(不是 3 1/2)。
有 3 种格式可供选择:-CP/M:40 条磁道(0 到 39),每条磁道 9 个扇区(名为 &41 到 &49),每面 169 Ko。-DATA:40 条磁道(0 到 39),每条磁道 9 个扇区(名为 &C1 到 &C9),每面 178 Ko。-IBM:40 条磁道(0 到 39),每条磁道 8 个扇区(名为 1 到 8),每面 154 Ko 可用空间。
3 英寸软盘与 3 1/2 英寸软盘不同。要读取 B 面:我必须弹出软盘并自行旋转,然后再将其放入磁盘驱动器!但效果很好。
轨道从 0 开始到 39。我只是好奇为什么扇区从 1 开始,以及为什么轨道 0 不用于 IBM 格式的目录……
例如,CP/M 格式非常简单:目录在第 2 轨道上,系统 CP/M 在第 0 和 1 轨道上。
我是一名经验丰富的汇编程序员,我认为扇区从零开始是合乎逻辑的,就像磁道一样。AMSTRAD CPC 计算机也可以接受 5 1/4 磁盘驱动器。我昨天买了一个。但磁道、扇区和格式在 5 1/4 磁盘上当然是相同的。
奥利维尔。
附言:抱歉,我的英语不是我的母语。^^
答案1
我认为您有一个误解,认为与计算机有关的事情都是从零开始的。
虽然所有基于 C 的语言(C、C++、C#、Java 等)都是如此,但对于一些与 C 一样古老或比 C 更古老的语言(如 FORTRAN 和 COBOL)来说,情况并非如此。
由于 Z80 是在 ANSI C 之前推出的,因此预计它能运行更多的 COBOL 和 FORTRAN,而不是 Lisp(Lisp 也很古老,但具有基于零的索引)。
因此,基于索引的索引是有意义的。
答案2
IBM 于 IBM 3740 上制定了第一个软盘规范,其中并未提及为系统保留扇区。为系统保留的唯一扇区是 00 号磁道,它仅存储“数据集标签”,用于标识存储在 01 至 76 号磁道中的信息类型。它明确规定第一个扇区是 SECTOR 1。这不是巧合,而是与计算机编号方式相反的自然编号方式。
我们可以观察到,当人类开始数数时,不是从零开始,而是从一开始。例如,假设一个教室里有 135 名学生。数数的方式是这样的:一、二、三……一百三十四、一百三十五。
其数值表示形式如下:1、2、3、...134、135 到目前为止我们同意,对吗?
现在让我们把不以 0 表示的数字放进去。它看起来像这样:001、002、003、...、015、016、...、099、100、...、133、134、135
这就是发生的事情中枢性高血压:0,0,1——0,0,2——0,0,3……
值得注意的是,Excel 工作表中的行或数据库中的自动数字字段以 1 开头而不是以 0 开头,但没有人对此发表任何评论。
David J. Bradley 是否以这种方式安排 BIOS?
是的,但他不在外面。
绝对没有技术原因导致 SECTOR 0 无法使用,除非出于其他原因将其保留并对用户隐藏。原则上,一切都表明这是一个自然编号的问题。
GA21-9152-2 文件编号 3740-00,15
IBM 3740 数据输入系统
第 12 页
磁盘初始化
...每个磁盘包含两个备用磁道,用于替换任何不规则磁道。此外,初始化功能还提供了一种改变软盘上扇区地址顺序的方法。通常,扇区的顺序按数字顺序排列(1、2、3、... 25、26)。
第 24 页
软盘上的数据标签
在初始化期间,数据集的数据集标签以磁性方式记录在软盘的索引轨道(轨道 00)上。此标签的主要目的是显示数据集在软盘上的位置
这是 1973 年。它将数据记录在 8 英寸软盘上。IBM PC 5150 诞生于 1981 年 8 月 12 日……我们不能忘记,它们必须与以前的设备保持一定的兼容性。
肯定没有技术原因。