<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.c256foenix.com/index.php?action=history&amp;feed=atom&amp;title=Unity</id>
	<title>Unity - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.c256foenix.com/index.php?action=history&amp;feed=atom&amp;title=Unity"/>
	<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Unity&amp;action=history"/>
	<updated>2026-05-17T22:14:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Unity&amp;diff=381&amp;oldid=prev</id>
		<title>Bzuidgeest at 19:51, 1 March 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Unity&amp;diff=381&amp;oldid=prev"/>
		<updated>2020-03-01T19:51:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&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;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:51, 1 March 2020&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-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; 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;Unity controls the hard-disk. Unity contains a &amp;quot;thin&amp;quot; layer to memory map the most important IDE/ATA registers to memory addresses. The table below was lifted from http://www.t13.org/Documents/UploadedDocuments/project/d0791r4c-ATA-1.pdf and then appended with the equivalent foenix registers on Unity.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; 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;Unity controls the hard-disk. Unity contains a &amp;quot;thin&amp;quot; layer to memory map the most important IDE/ATA registers to memory addresses. The table below was lifted from http://www.t13.org/Documents/UploadedDocuments/project/d0791r4c-ATA-1&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;.pdf / http://www.t13.org/Documents/UploadedDocuments/project/d2008r7b-ATA-3&lt;/ins&gt;.pdf and then appended with the equivalent foenix registers on Unity.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;Question marks are denoted at places where it is unknown if and where unity exposes the relevant register.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;Question marks are denoted at places where it is unknown if and where unity exposes the relevant register.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bzuidgeest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Unity&amp;diff=380&amp;oldid=prev</id>
		<title>Bzuidgeest at 19:15, 1 March 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Unity&amp;diff=380&amp;oldid=prev"/>
		<updated>2020-03-01T19:15:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&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;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:15, 1 March 2020&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-l28&quot; &gt;Line 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 28:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;|                               |        Command block registers           |        Command block registers           |&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;|                               |        Command block registers           |        Command block registers           |&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; 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;|  A   |  N   |  0  |  0  |  0  | Data                | Data               | $AFE830 &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;            &lt;/del&gt;| $AFE830 &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;           &lt;/del&gt;|&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; 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;|  A   |  N   |  0  |  0  |  0  | Data                | Data               | $AFE830 &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;   (8-bit)  &lt;/ins&gt;| $AFE830 &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;   (8-bit) |&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; 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;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|                               |                                          | $AFE838-39 (16-bit) | $AFE838-39 (16-bit)&lt;/ins&gt;|&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;|  A   |  N   |  0  |  0  |  1  | Error register      | Features           | $AFE831		 | ????????           |&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;|  A   |  N   |  0  |  0  |  1  | Error register      | Features           | $AFE831		 | ????????           |&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;|  A   |  N   |  0  |  1  |  0  | Sector count        | Sector count       | $AFE832	         | $AFE832            |&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; 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;|  A   |  N   |  0  |  1  |  0  | Sector count        | Sector count       | $AFE832	         | $AFE832            |&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bzuidgeest</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Unity&amp;diff=379&amp;oldid=prev</id>
		<title>Bzuidgeest: Created page with &quot;  Unity controls the hard-disk. Unity contains a &quot;thin&quot; layer to memory map the most important IDE/ATA registers to memory addresses. The table below was lifted from http://ww...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Unity&amp;diff=379&amp;oldid=prev"/>
		<updated>2020-03-01T19:08:44Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;  Unity controls the hard-disk. Unity contains a &amp;quot;thin&amp;quot; layer to memory map the most important IDE/ATA registers to memory addresses. The table below was lifted from http://ww...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Unity controls the hard-disk. Unity contains a &amp;quot;thin&amp;quot; layer to memory map the most important IDE/ATA registers to memory addresses. The table below was lifted from http://www.t13.org/Documents/UploadedDocuments/project/d0791r4c-ATA-1.pdf and then appended with the equivalent foenix registers on Unity.&lt;br /&gt;
&lt;br /&gt;
Question marks are denoted at places where it is unknown if and where unity exposes the relevant register. &lt;br /&gt;
&lt;br /&gt;
Hopefully this information is to some use for anyone trying to implement a hard-disk driver.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Logic conventions are:            A = signal asserted;&lt;br /&gt;
                                  N = signal negated;&lt;br /&gt;
                                  x = does not matter which it is.&lt;br /&gt;
								  &lt;br /&gt;
Table 6 - I/O port functions/selection addresses&lt;br /&gt;
+===============================-==========================================-==========================================+&lt;br /&gt;
|         Addresses             |                 Functions                |                 Foenix Unity             |&lt;br /&gt;
|-------------------------------+------------------------------------------+------------------------------------------|&lt;br /&gt;
|      |      |     |     |     |    READ (DIOR-)     |   WRITE (DIOW-)    |    READ             |   WRITE            |&lt;br /&gt;
|CS1FX-|CS3FX-| DA2 | DA1 | DA0 |------------------------------------------|------------------------------------------|&lt;br /&gt;
|      |      |     |     |     |         Control block registers          |         Control block registers          |&lt;br /&gt;
|------+------+-----+-----+-----+------------------------------------------+------------------------------------------|&lt;br /&gt;
|  N   |  N   |  x  |  x  |  x  | Data bus high imped | Not used           |                     |                    |&lt;br /&gt;
|  N   |  A   |  0  |  x  |  X  | Data bus high imped | Not used           |                     |                    |&lt;br /&gt;
|  N   |  A   |  1  |  0  |  x  | Data bus high imped | Not used           |                     |                    |&lt;br /&gt;
|  N   |  A   |  1  |  1  |  0  | Alternate status    | Device control     | ????????????????    | ??????????????     |&lt;br /&gt;
|  N   |  A   |  1  |  1  |  1  | Drive address       | Not used           | ?????????????       |                    |&lt;br /&gt;
|-------------------------------+------------------------------------------+------------------------------------------|&lt;br /&gt;
|                               |        Command block registers           |        Command block registers           |&lt;br /&gt;
|-------------------------------+------------------------------------------+------------------------------------------|&lt;br /&gt;
|  A   |  N   |  0  |  0  |  0  | Data                | Data               | $AFE830             | $AFE830            |&lt;br /&gt;
|  A   |  N   |  0  |  0  |  1  | Error register      | Features           | $AFE831		 | ????????           |&lt;br /&gt;
|  A   |  N   |  0  |  1  |  0  | Sector count        | Sector count       | $AFE832	         | $AFE832            |&lt;br /&gt;
|  A   |  N   |  0  |  1  |  1  | Sector number       | Sector number      | $AFE833             | $AFE833            |&lt;br /&gt;
|  A   |  N   |  0  |  1  |  1  | * LBA bits  0- 7    | * LBA bits  0- 7   | $AFE833		 | $AFE833            |&lt;br /&gt;
|  A   |  N   |  1  |  0  |  0  | Cylinder low        | Cylinder low       | $AFE834             | $AFE834            |&lt;br /&gt;
|  A   |  N   |  1  |  0  |  0  | * LBA bits  8-15    | * LBA bits  8-15   | $AFE834             | $AFE834            |&lt;br /&gt;
|  A   |  N   |  1  |  0  |  1  | Cylinder high       | Cylinder high      | $AFE835             | $AFE835            |&lt;br /&gt;
|  A   |  N   |  1  |  0  |  1  | * LBA bits 16-23    | * LBA bits 16-23   | $AFE835             | $AFE835            |&lt;br /&gt;
|  A   |  N   |  1  |  1  |  0  | Drive/head          | Drive/head         | $AFE836             | $AFE836            |&lt;br /&gt;
|  A   |  N   |  1  |  1  |  0  | * LBA bits 24-27    | * LBA bits 24-27   | $AFE836             | $AFE836            |&lt;br /&gt;
|  A   |  N   |  1  |  1  |  1  | Status              | Command            | $AFE837             | $AFE837            |&lt;br /&gt;
|  A   |  A   |  x  |  x  |  x  | Invalid address     | Invalid address    |                     |                    |&lt;br /&gt;
|---------------------------------------------------------------------------------------------------------------------|&lt;br /&gt;
|                       * Mapping of registers in LBA mode                                                            |&lt;br /&gt;
+=====================================================================================================================+&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bzuidgeest</name></author>
		
	</entry>
</feed>