<?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_3.1</id>
	<title>Формат дисков CP/M 3.1 - История изменений</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_3.1"/>
	<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_3.1&amp;action=history"/>
	<updated>2026-05-03T09:09:00Z</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_3.1&amp;diff=1958&amp;oldid=prev</id>
		<title>Panther в 06:40, 30 сентября 2015</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_3.1&amp;diff=1958&amp;oldid=prev"/>
		<updated>2015-09-30T06:40:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 09:40, 30 сентября 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Строка 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Формат дисков CP/M 3.1 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Формат дисков CP/M 3.1 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CP/M 3.1 использует очень похожую с [[Формат дисков CP/M 2.2|CP/M 2.2 файловую систему]], но с большим числом поддерживаемых дисковых форматов. Параметры дисков хранятся в специальном &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;блоке - &lt;/del&gt;DPB (Disk Parameter Block), который содержит следующую информацию:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CP/M 3.1 использует очень похожую с [[Формат дисков CP/M 2.2|CP/M 2.2 файловую систему]], но с большим числом поддерживаемых дисковых форматов. Параметры дисков хранятся в специальном &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;блоке — &lt;/ins&gt;DPB (Disk Parameter Block), который содержит следующую информацию:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	DEFW	spt	;Sector Per Track - число 128-байтных записей на одной дорожке&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	DEFW	spt	;Sector Per Track - число 128-байтных записей на одной дорожке&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l169&quot;&gt;Строка 169:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 169:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Система экстремально проста:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Система экстремально проста:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* При сохранении пароля. Все 8 байт пароля складываются вместе (включая пробелы, если таковые присутствуют). Результат помещается в PB (декодирующий байт). Затем каждый байт пароля XOR-ится с PB и сохраняется задом наперед в директории (&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;т.е. &lt;/del&gt;последний байт помещается в P1).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* При сохранении пароля. Все 8 байт пароля складываются вместе (включая пробелы, если таковые присутствуют). Результат помещается в PB (декодирующий байт). Затем каждый байт пароля XOR-ится с PB и сохраняется задом наперед в директории (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;то есть &lt;/ins&gt;последний байт помещается в P1).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* При декодировании пароля. 8 байт пароля XOR-ятся с PB и читаются в обратном порядке.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* При декодировании пароля. 8 байт пароля XOR-ятся с PB и читаются в обратном порядке.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l176&quot;&gt;Строка 176:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 176:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Данный перевод ни в коем случае не претендует на то, чтобы считаться абсолютно точным и безошибочным. В случае, если Вами будут найдены какие-то ошибки или неточности, просьба написать мне: [mailto:era_cg@speccy.su era_cg@speccy.su]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Данный перевод ни в коем случае не претендует на то, чтобы считаться абсолютно точным и безошибочным. В случае, если Вами будут найдены какие-то ошибки или неточности, просьба написать мне: [mailto:era_cg@speccy.su era_cg@speccy.su]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Black Cat / Era CG&amp;lt;br/&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Black Cat / Era CG&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;3o.o9.2o15&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;3o.o9.2o15&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:CP/M]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:CP/M]]&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_3.1&amp;diff=1957&amp;oldid=prev</id>
		<title>Panther: Новая страница: «{{ДИ|Источник=http://www.seasip.info/Cpm/format31.html|Перевод=Black Cat / Era CG ([mailto:era_cg@speccy.su era_cg@speccy.su])}}  == Формат…»</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_3.1&amp;diff=1957&amp;oldid=prev"/>
		<updated>2015-09-30T06:37:15Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{ДИ|Источник=http://www.seasip.info/Cpm/format31.html|Перевод=Black Cat / Era CG ([mailto:era_cg@speccy.su era_cg@speccy.su])}}  == Формат…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{ДИ|Источник=http://www.seasip.info/Cpm/format31.html|Перевод=Black Cat / Era CG ([mailto:era_cg@speccy.su era_cg@speccy.su])}}&lt;br /&gt;
&lt;br /&gt;
== Формат дисков CP/M 3.1 ==&lt;br /&gt;
&lt;br /&gt;
CP/M 3.1 использует очень похожую с [[Формат дисков CP/M 2.2|CP/M 2.2 файловую систему]], но с большим числом поддерживаемых дисковых форматов. Параметры дисков хранятся в специальном блоке - 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 или 8000h - для фиксированного диска.&lt;br /&gt;
			;число элементов в директории/4, округленно.&lt;br /&gt;
	DEFW	off	;Offset - смещение, число зарезервированных (под систему - прим. переводчика) дорожек&lt;br /&gt;
        DEFB	psh	;Физическое смещение сектора, 0 =&amp;gt; 128-байтные сектора&lt;br /&gt;
			;1 =&amp;gt; 256-байтные сектора  2 =&amp;gt; 512-байтные сектора...&lt;br /&gt;
	DEFB	phm	;Маска физического сектора,  0 =&amp;gt; 128-байтные сектора&lt;br /&gt;
			;1 =&amp;gt; 256-байтные сектора, 3 =&amp;gt; 512-байтные сектора...&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;
&lt;br /&gt;
== Директория CP/M 3.1 ==&lt;br /&gt;
&lt;br /&gt;
Директория CP/M 3.1 имеет четыре типа записей:&lt;br /&gt;
&lt;br /&gt;
=== Файлы ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0U 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;
0U = User number - Номер области пользователя. 0-15. Номер области позволяет существование&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;
       T3! установлен для архивных файлов.&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 - Счетчик байт последней записи.&lt;br /&gt;
      &lt;br /&gt;
      Что такое Счетчик байт последней записи? С точки зрения CP/M, это просто число 0-255,&lt;br /&gt;
    ассоциированное с файлом, которое может использоваться программой для любых целей.&lt;br /&gt;
    Документация не определяет его назначения.&lt;br /&gt;
    Если необходимо, чтобы программы имели возможность обмениваться файлами точного размера&lt;br /&gt;
    (не обязательно кратного 128-байтной записи), тогда необходимо каким-то образом определить,&lt;br /&gt;
    что именно должно означать это число. Необходимо соблюдать следующие условия:&lt;br /&gt;
    - если число равно 0, файл использует каждый свой байт в образе диска (для совместимости с&lt;br /&gt;
    ранними версиями системы).&lt;br /&gt;
    - число должно позволять точно определять число байт в последней 128-байтной записи.&lt;br /&gt;
    К сожалению, это тем не менее допускает два возможных варианта:&lt;br /&gt;
    - число определяет число НЕИСПОЛЬЗОВАННЫХ байт последней записи.&lt;br /&gt;
    - число определяет число ИСПОЛЬЗОВАННЫХ байт последней записи; в этом случае опно принимает&lt;br /&gt;
    значения 1-127, 0 - недопустимое значение, так как означает 128.&lt;br /&gt;
    К еще большему сожалению, существуют программы, которые используют обе системы:&lt;br /&gt;
    - ISX, эмулятор ISIS-II, использует первый вариант интерпретации.&lt;br /&gt;
    - ОС DOS Plus использует второй. Также поступают утилиты cpmtools для MS-DOS от Tilmann Reh&lt;br /&gt;
    и мои (скорее всего John Elliott - автор оригинального документа - прим. переводчика).&lt;br /&gt;
    - DOS+2.5 никак не интерпретирует и неиспользует это число, но в документации предлогалось&lt;br /&gt;
    использовать вариант интерпретации ISX.&lt;br /&gt;
&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;
    Размеры файлов опционально сохраняются точно (с использованием байта S1), но эта система&lt;br /&gt;
    практически не используется.&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20 F1 F2 F3 F4 F5 F6 F7 F8 T1 T2 T3 LB PB RR RR     LABENAMETYP....&lt;br /&gt;
P1 P2 P3 P4 P5 P6 P7 P8 D1 D1 D1 D1 D2 D2 D2 D2    ................&lt;br /&gt;
&lt;br /&gt;
20h - Идентификатор записи метки диска&lt;br /&gt;
F1-F8, T1-T3 - Имя метки, 7-бит ASCII&lt;br /&gt;
LB - Байт метки. Бит 0 установлен =&amp;gt; Метка включена&lt;br /&gt;
                 Бит 4 установлен =&amp;gt; Сохранять время создания файлов  --+   Эти два бита&lt;br /&gt;
                 Бит 5 установлен =&amp;gt; Сохранять время изменения файлов   +-- взаимо-&lt;br /&gt;
                 Бит 6 установлен =&amp;gt; Сохранять время доступа к файлам --+   исключающие&lt;br /&gt;
                 Бит 7 установлен =&amp;gt; Защита паролем включена&lt;br /&gt;
PB - Используется для декодирования пароля метки&lt;br /&gt;
RR - Зарезервированно, устанавливается в 0.&lt;br /&gt;
P1-P8 - пароль, слабо зашифрован.&lt;br /&gt;
D1 - Время создания метки&lt;br /&gt;
D2 - Время изменения метки&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Даты файлов ===&lt;br /&gt;
&lt;br /&gt;
Если хранение дат включено, каждая четвертая запись директории содержит даты для предыдущих трех записей:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
21 D1 D1 D1 D1 D2 D2 D2 D2 M1 00 D3 D3 D3 D3 D4    !...............&lt;br /&gt;
D4 D4 D4 M2 00 D5 D5 D5 D5 D6 D6 D6 D6 M3 00 00    ................&lt;br /&gt;
&lt;br /&gt;
21h - Идентификатор записи даты.&lt;br /&gt;
D1  - Дата/время создания или доступа для первого файла&lt;br /&gt;
D2  - Дата/время изменения первого файла&lt;br /&gt;
D3  - Дата/время создания или доступа для второго файла&lt;br /&gt;
D4  - Дата/время изменения второго файла&lt;br /&gt;
D5  - Дата/время создания или доступа для третьего файла&lt;br /&gt;
D6  - Дата/время изменения третьего файла&lt;br /&gt;
M1  - Режим пароля для первого файла&lt;br /&gt;
M2  - Режим пароля для второго файла&lt;br /&gt;
M3  - Режим пароля для третьего файла&lt;br /&gt;
00  - Зарезервировано.&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;
        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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1U F1 F2 F3 F4 F5 F6 F7 F8 T1 T2 T3 PM PB RR RR   .FILENAMETYP....&lt;br /&gt;
P1 P2 P3 P4 P5 P6 P7 P8 RR RR RR RR RR RR RR RR   ................&lt;br /&gt;
&lt;br /&gt;
1U = 16+Номер области пользователя (т.е. 16-31). Где номер области пользователя - номер&lt;br /&gt;
    области пользователя файла, к которому относится пароль.&lt;br /&gt;
F1-F8 - Имя файла, к которому относится пароль.&lt;br /&gt;
T1-T3 - Тип файла, к которому относится пароль.&lt;br /&gt;
PM    - Байт режима пароля&lt;br /&gt;
         Бит 7 установлен =&amp;gt; Пароль требуется для чтения из файла&lt;br /&gt;
         Бит 7 установлен =&amp;gt; Пароль требуется для записи в файл&lt;br /&gt;
         Бит 5 установлен =&amp;gt; Пароль требуется для удаления файла&lt;br /&gt;
PB    - Используется для декодирования пароля&lt;br /&gt;
P1-P8 - пароль, слабо зашифрован.&lt;br /&gt;
RR    - Зарезервированно, устанавливается в 0.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Система шифрования пароля ===&lt;br /&gt;
&lt;br /&gt;
Система экстремально проста:&lt;br /&gt;
&lt;br /&gt;
* При сохранении пароля. Все 8 байт пароля складываются вместе (включая пробелы, если таковые присутствуют). Результат помещается в PB (декодирующий байт). Затем каждый байт пароля XOR-ится с PB и сохраняется задом наперед в директории (т.е. последний байт помещается в P1).&lt;br /&gt;
* При декодировании пароля. 8 байт пароля XOR-ятся с PB и читаются в обратном порядке.&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;
3o.o9.2o15&lt;br /&gt;
&lt;br /&gt;
[[Категория:CP/M]]&lt;/div&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
</feed>