<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2_CP%2FM_2.2</id>
	<title>Формат дисков CP/M 2.2 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2_CP%2FM_2.2"/>
	<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2_CP/M_2.2&amp;action=history"/>
	<updated>2026-05-05T04:13:01Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2_CP/M_2.2&amp;diff=1951&amp;oldid=prev</id>
		<title>Panther: Panther переименовал страницу Форматы файлов CP/M в Формат дисков CP/M 2.2 без оставления перенаправления</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2_CP/M_2.2&amp;diff=1951&amp;oldid=prev"/>
		<updated>2015-09-29T06:49:57Z</updated>

		<summary type="html">&lt;p&gt;Panther переименовал страницу &lt;a href=&quot;/w/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_CP/M&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Форматы файлов CP/M (страница не существует)&quot;&gt;Форматы файлов CP/M&lt;/a&gt; в &lt;a href=&quot;/wiki/%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2_CP/M_2.2&quot; title=&quot;Формат дисков CP/M 2.2&quot;&gt;Формат дисков CP/M 2.2&lt;/a&gt; без оставления перенаправления&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 09:49, 29 сентября 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2_CP/M_2.2&amp;diff=1950&amp;oldid=prev</id>
		<title>Panther: Размещено по просьбе автора перевода</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2_CP/M_2.2&amp;diff=1950&amp;oldid=prev"/>
		<updated>2015-09-29T06:49:36Z</updated>

		<summary type="html">&lt;p&gt;Размещено по просьбе автора перевода&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{ДИ|Источник=http://www.seasip.info/Cpm/format22.html|Перевод=Black Cat / Era CG ([mailto:era_cg@speccy.su era_cg@speccy.su])}}&lt;br /&gt;
&lt;br /&gt;
== Формат дисков CP/M 2.2 ==&lt;br /&gt;
&lt;br /&gt;
CP/M 2.2 поддерживает работу с гораздо большим числом дисковых форматов, чем CP/M 1.4. Параметры дисков хранятся в специальном блоке - DPB (Disk Parameter Block), который содержит следующую информацию:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	DEFW	spt	;Sector Per Track - число 128-байтных записей на одной дорожке&lt;br /&gt;
	DEFB	bsh	;Block shift - блоковое смещение. 3 =&amp;gt; 1k, 4 =&amp;gt; 2k, 5 =&amp;gt; 4k....&lt;br /&gt;
	DEFB	blm	;Block mask - маска блока. 7 =&amp;gt; 1k, 0Fh =&amp;gt; 2k, 1Fh =&amp;gt; 4k...&lt;br /&gt;
	DEFB	exm	;Extent mask - маска экстента, см. далее&lt;br /&gt;
	DEFW	dsm	;(число блоков на диске)-1&lt;br /&gt;
	DEFW	drm	;(число элементов в директории)-1&lt;br /&gt;
	DEFB	al0	;Карта расположения директории, первый байт&lt;br /&gt;
	DEFB	al1	;Карта расположения директории, второй байт&lt;br /&gt;
	DEFW	cks	;Checksum vector size - размер вектора контрольной суммы (?), 0 - для фиксированного диска&lt;br /&gt;
			;число элементов в директории/4, округленно.&lt;br /&gt;
	DEFW	off	;Offset - смещение, число зарезервированных (под систему - прим. переводчика) дорожек&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Карта расположения директории интерпретируется следующим образом:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       al0              al1&lt;br /&gt;
b7b6b5b4b3b2b1b0 b7b6b5b4b3b2b1b0&lt;br /&gt;
 1 1 1 1 0 0 0 0  0 0 0 0 0 0 0 0&lt;br /&gt;
&lt;br /&gt;
 - таким образом, в этом примере директория занимает первые четыре блока.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DPB не хранится на диске. Параметры диска либо жестко прописаны в BIOS, либо определяются на лету при чтении диска. &lt;br /&gt;
Примечание переводчика. Это не совсем так. В некоторых вариантах реализации CP/M DPB все же может хранится на диске (Возможно это справедливо только для советских реализаций системы). Например, в CP/M для компьютера Корвет (а также в системах заимствовавших этот принцип - Орион, Вектор-06Ц), DPB хранится в байтах 10h-1Eh первого сектора первой дорожке диска. Также в этом секторе в этих системах в байтах 0Ah-0Fh хранится так называемый Disk Parameter Header (DPH), описывающий физический формат диска и имеющий следующую структуру:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	DEFB	len	;Размер физического сектора. 0 =&amp;gt; 128, 1 =&amp;gt; 256, 2 =&amp;gt; 512, 3 =&amp;gt; 1024&lt;br /&gt;
	DEFB	den	;(число сторон диска)-1&lt;br /&gt;
	DEFW	sec	;Число секторов на дорожке&lt;br /&gt;
	DEFW	trk	;Число дорожек на одной стороне диска&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также в байте 1Fh хранится контрольная сумма всех предыдущих 15 байт (00h-1Eh), вычисляемая простой арифметической суммой значений всех байт +66h (CheckSum = [00h]+[01h]+...+[1Dh]+[1Eh]+66h). Учитывается только младший байт результата.&lt;br /&gt;
&lt;br /&gt;
Зарезервированные дорожки содержат образ CP/M 2.2, используемый при перезапуске системы с диска. Диски могут быть отформатированы, как диски только для данных, в этом случае они не будут иметь системных дорожек и не смогут быть использованы для перезапуска системы.&lt;br /&gt;
&lt;br /&gt;
== Директория CP/M 2.2 ==&lt;br /&gt;
&lt;br /&gt;
Директория CP/M 2.2 имеет только один тип записи:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UU F1 F2 F3 F4 F5 F6 F7 F8 T1 T2 T3 EX S1 S2 RC   .FILENAMETYP....&lt;br /&gt;
AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL   ................&lt;br /&gt;
&lt;br /&gt;
UU = User number - Номер области пользователя. 0-15 (в некоторых реализациях системы, 0-31).&lt;br /&gt;
     Номер области позволяет существование нескольких файлов с одинаковыми именами на диске. &lt;br /&gt;
     User number = 0E5h =&amp;gt; Файл удален&lt;br /&gt;
Fn - Filename - имя файла&lt;br /&gt;
Tn - FyleType - тип файла. Используется 7-бит ASCII.&lt;br /&gt;
       Старший бит T1 (часто упоминается как T1&amp;#039;) установлен для файлов &amp;quot;только для чтения&amp;quot;.&lt;br /&gt;
       T2&amp;#039; установлен для системных файлов (соответствует атрибуту &amp;quot;скрытого&amp;quot; файла в&lt;br /&gt;
     других системах).&lt;br /&gt;
EX = Extent counter - номер экстента, младший байт - принимает значения 0-31&lt;br /&gt;
S2 = Номер экстента, старший байт.&lt;br /&gt;
&lt;br /&gt;
      Экстент - это часть файла, контролируемая одной записью директории.&lt;br /&gt;
    Если файл состоит из большего числа блоков, чем может быть описано в одной записи в&lt;br /&gt;
    директории, он получает несколько записей, отличающихся байтами EX и S2.&lt;br /&gt;
    Формула: Номер записи = ((32*S2)+EX) / (exm+1), где exm - значение маски экстента из DPB.&lt;br /&gt;
&lt;br /&gt;
S1 - зарезервировано, устанавливается в 0.&lt;br /&gt;
RC - Число записей (1 запись=128 байт) занятых этим экстентом, младший байт.&lt;br /&gt;
    Полное число записей занятых экстентом равно:&lt;br /&gt;
&lt;br /&gt;
    (EX &amp;amp; exm) * 128 + RC&lt;br /&gt;
&lt;br /&gt;
    Если RC равно 80h, этот экстент полный и может существовать еще один на этом диске.&lt;br /&gt;
    Размеры файлов округляются в сторону ближайших 128 байт.&lt;br /&gt;
&lt;br /&gt;
AL - Allocation - расположение (карта расположения блоков файла). Каждый байт AL - это номер&lt;br /&gt;
    блока на диске. Если AL содержит ноль, то он не указывает на какой-либо блок (то есть &lt;br /&gt;
    соответствующий блок не существует). Например 3k файл может иметь следующее расположение:&lt;br /&gt;
    5,6,8,0,0.... - первые 1k - в блоке 5, вторые - в блоке 6, третьи - в блоке 8.&lt;br /&gt;
     AL-номера могут быть либо 8-битными (если диск содержит менее 256 блоков), либо 16-&lt;br /&gt;
    битными (первым хранится младший байт).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Даты файлов ==&lt;br /&gt;
&lt;br /&gt;
Некоторые DDOS совместимые c 3 версией (такие как Z80DOS и DOS+) сохраняют даты файлов. К сожалению формат хранения дат, который они используют, отличается от формата, используемого в CP/M 3.&lt;br /&gt;
&lt;br /&gt;
Каждая четвертая запись директории, поддерживающей хранение дат, содержит даты для предыдущих трех записей:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
21 00 C1 C1 M1 M1 M1 M1 A1 A1 A1 A1 C2 C2 M2 M2    !...............&lt;br /&gt;
M2 M2 A2 A2 A2 A2 C3 C3 M3 M3 M3 M3 A3 A3 A3 A3    ................&lt;br /&gt;
&lt;br /&gt;
C1 = Дата создания первого файла&lt;br /&gt;
M1 = Дата/время изменения первого файла&lt;br /&gt;
A1 = Дата/время доступа для первого файла&lt;br /&gt;
C2 = Дата создания второго файла&lt;br /&gt;
M2 = Дата/время изменения второго файла&lt;br /&gt;
A2 = Дата/время доступа для второго файла&lt;br /&gt;
C3 = Дата создания третьего файла&lt;br /&gt;
M3 = Дата/время изменения третьего файла  &lt;br /&gt;
A3 = Дата/время доступа для третьего файла&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Формат хранения Даты/времени:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        DW      день    ;Юлианская дата, младший байт хранится первым.&lt;br /&gt;
                        ;1 день = 1 января 1978.&lt;br /&gt;
        DB      hour    ;Часы в BCD формате (двоично-десятичный код), т.о. 13h =&amp;gt; 13:xx&lt;br /&gt;
        DB      min     ;Минуты в BCD формате&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== От переводчика ==&lt;br /&gt;
&lt;br /&gt;
Данный перевод ни в коем случае не претендует на то, чтобы считаться абсолютно точным и безошибочным. В случае, если Вами будут найдены какие-то ошибки или неточности, просьба написать мне: [mailto:era_cg@speccy.su era_cg@speccy.su]&lt;br /&gt;
&lt;br /&gt;
Black Cat / Era CG&amp;lt;br/&amp;gt;&lt;br /&gt;
29.o9.2o15&lt;br /&gt;
&lt;br /&gt;
[[Категория:CP/M]]&lt;/div&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
</feed>