Сейчас я программирую на 8-битном компьютере Z80 с CP / M 2.2 (в качестве хобби), и формат дискеты - IBM, 40 дорожек, 8 секторов на дорожку, 512 байт на сектор. Свободное место составляет 154 Ко на каждой стороне диска.
Почему сектора индексируются от 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 на каждой грани. -ДАННЫЕ: 40 дорожек (от 0 до 39) по 9 секторов на дорожку (с именами от & C1 до & C9) 178 Ко на каждой грани. -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 дискет.
Оливье.
PS: извините за мой английский, это не мой родной язык. ^^
Ответы:
Я думаю, у вас есть неправильное представление, что все, что касается компьютеров, начинается с нуля
Хотя это относится ко всем языкам на основе C (C, C ++, C #, Java и т. Д.), Это НЕ верно для некоторых языков, которые являются такими же старыми или старше C (например, FORTRAN и COBOL).
Поскольку Z80 был представлен до ANSI C, ожидалось, что он будет использовать гораздо больше COBOL и FORTRAN, чем Lisp (который также очень старый, но имеет индексирование на основе нуля).
Таким образом, индексирование на основе имеет смысл.
источник
Первая спецификация на гибких дисках была сделана IBM с появлением IBM 3740 и не упоминает, что есть сектора, зарезервированные для системы. Единственным резервированием для системы является трек 00, в котором хранятся только «Метки набора данных», которые идентифицируют тип информации, хранящейся в треках с 01 по 76. Он четко определяет, что первый сектор - это СЕКТОР 1. Это не совпадение, а вопрос натуральной нумерации против нумерации компьютера.
Мы можем наблюдать, что когда человек начинает что-то считать, он начинается не с нуля, а с одного. Например, представьте, что в классе 135 учеников. Подсчет числа будет примерно таким: раз, два, три ... сто тридцать четыре, сто тридцать пять.
Его числовое представление будет таким: 1, 2, 3, ... 134, 135 Итак, мы согласны, верно?
Теперь давайте поместим цифры, которые не представлены как 0. Это будет выглядеть так: 001, 002, 003, ..., 015, 016, ..., 099, 100, ..., 133, 134, 135
Вот что происходит с CHS : 0,0,1 - 0,0,2 - 0,0,3 ...
Важно, что строки в таблицах Excel или в авто-числовых полях в базе данных начинаются с 1, а не с 0, и никто ничего не сказал по этому поводу.
Дэвид Дж. Брэдли так планировал BIOS?
Да, но он не был вне.
Безусловно, нет технической причины, по которой SECTOR 0 нельзя использовать, если он не зарезервирован и скрыт от пользователей по другим причинам. В принципе все указывает на это вопрос естественной нумерации.
GA21-9152-2 Файл № 3740-00,15
IBM 3740 System Entry System
page 12
ИНИЦИАЛИЗАЦИЯ ДИСКА
... Каждый диск содержит две резервные дорожки для замены любых неправильных дорожек. Кроме того, функция инициализации обеспечивает возможность изменения последовательности адресов секторов на дискете. Обычно последовательность секторов находится в числовом порядке (1, 2, 3, ... 25,26) .
стр. 24
МАРКИРОВКА ДАННЫХ НА ДИСКЕТЕ
Во время инициализации метка набора данных для набора данных записывается магнитным способом на дорожку указателя (дорожка 00) на дискете. Основная цель этой метки - показать расположение набора данных на дискете.
Это было в 1973 году. На нем были записаны данные на 8 "дискете. IBM PC 5150 родился 12 августа 1981 года ... и мы не можем забывать, что им приходилось поддерживать некоторую совместимость с предыдущими устройствами.
Не было никаких технических причин.
источник