<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.discferret.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Philpem</id>
		<title>DiscFerret - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.discferret.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Philpem"/>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/wiki/Special:Contributions/Philpem"/>
		<updated>2026-04-29T08:41:06Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=428</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=428"/>
				<updated>2021-05-30T00:35:36Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers and we&amp;#039;re now working on fixing the last few remaining issues and putting the DiscFerret into production. Keep checking back, and feel free to join us in [ircs://irc.libera.chat:6697/#discferret #discferret] on [https://libera.chat/ Libera Chat]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sadly DiscFerret hardware is no longer available, but there are bare PCBs for sale if you&amp;#039;d like to build one yourself. Please email philpem@philpem.me.uk if you&amp;#039;re interested.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR), Commodore 64, and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in [ircs://irc.libera.chat:6697/#discferret #discferret] on [https://libera.chat/ Libera Chat].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.png|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;[https://twitter.com/#!/search/%23popsource #popsource]&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=427</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=427"/>
				<updated>2021-05-30T00:34:28Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers and we&amp;#039;re now working on fixing the last few remaining issues and putting the DiscFerret into production. Keep checking back, and feel free to join us in [ircs://irc.libera.chat:6697/#discferret #discferret] on [https://libera.chat/ Libera Chat]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you&amp;#039;re interested in developing software for the DiscFerret, or even just testing it and providing us with feedback, please contact Phil at phil@discferret.com. Parts are being procured, and several Limited Pre-production (LPP) units will be assembled for sale within the coming weeks. Get your orders in early, they&amp;#039;re sure to sell out fast!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR), Commodore 64, and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in [ircs://irc.libera.chat:6697/#discferret #discferret] on [https://libera.chat/ Libera Chat].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.png|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;[https://twitter.com/#!/search/%23popsource #popsource]&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=426</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=426"/>
				<updated>2021-05-28T12:17:13Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers and we&amp;#039;re now working on fixing the last few remaining issues and putting the DiscFerret into production. Keep checking back, and feel free to join us in [http://webchat.freenode.net/?channels=discferret #discferret on irc.freenode.net] or on the [http://mail.discferret.com/mailman/listinfo/discferret-l_discferret.com DiscFerret e-mail discussion list]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you&amp;#039;re interested in developing software for the DiscFerret, or even just testing it and providing us with feedback, please contact Phil at phil@discferret.com. Parts are being procured, and several Limited Pre-production (LPP) units will be assembled for sale within the coming weeks. Get your orders in early, they&amp;#039;re sure to sell out fast!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR), Commodore 64, and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in [ircs://irc.libera.chat:6697/#discferret #discferret] on [https://libera.chat/ Libera Chat].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.png|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;[https://twitter.com/#!/search/%23popsource #popsource]&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=425</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=425"/>
				<updated>2021-05-28T12:16:41Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers and we&amp;#039;re now working on fixing the last few remaining issues and putting the DiscFerret into production. Keep checking back, and feel free to join us in [http://webchat.freenode.net/?channels=discferret #discferret on irc.freenode.net] or on the [http://mail.discferret.com/mailman/listinfo/discferret-l_discferret.com DiscFerret e-mail discussion list]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you&amp;#039;re interested in developing software for the DiscFerret, or even just testing it and providing us with feedback, please contact Phil at phil@discferret.com. Parts are being procured, and several Limited Pre-production (LPP) units will be assembled for sale within the coming weeks. Get your orders in early, they&amp;#039;re sure to sell out fast!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR), Commodore 64, and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in [ircs://irc.libera.chat:6697/discferret #discferret] on [https://libera.chat/ Libera Chat].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.png|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;[https://twitter.com/#!/search/%23popsource #popsource]&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=424</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=424"/>
				<updated>2021-05-28T12:16:11Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers and we&amp;#039;re now working on fixing the last few remaining issues and putting the DiscFerret into production. Keep checking back, and feel free to join us in [http://webchat.freenode.net/?channels=discferret #discferret on irc.freenode.net] or on the [http://mail.discferret.com/mailman/listinfo/discferret-l_discferret.com DiscFerret e-mail discussion list]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you&amp;#039;re interested in developing software for the DiscFerret, or even just testing it and providing us with feedback, please contact Phil at phil@discferret.com. Parts are being procured, and several Limited Pre-production (LPP) units will be assembled for sale within the coming weeks. Get your orders in early, they&amp;#039;re sure to sell out fast!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR), Commodore 64, and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in #discferret on [https://libera.chat/ Libera Chat].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.png|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;[https://twitter.com/#!/search/%23popsource #popsource]&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=423</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=423"/>
				<updated>2021-05-28T12:16:00Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: update IRC chjannel link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers and we&amp;#039;re now working on fixing the last few remaining issues and putting the DiscFerret into production. Keep checking back, and feel free to join us in [http://webchat.freenode.net/?channels=discferret #discferret on irc.freenode.net] or on the [http://mail.discferret.com/mailman/listinfo/discferret-l_discferret.com DiscFerret e-mail discussion list]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you&amp;#039;re interested in developing software for the DiscFerret, or even just testing it and providing us with feedback, please contact Phil at phil@discferret.com. Parts are being procured, and several Limited Pre-production (LPP) units will be assembled for sale within the coming weeks. Get your orders in early, they&amp;#039;re sure to sell out fast!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR), Commodore 64, and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in #discferret on [[https://libera.chat/ Libera Chat].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.png|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;[https://twitter.com/#!/search/%23popsource #popsource]&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=421</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=421"/>
				<updated>2013-03-05T09:09:19Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers and we&amp;#039;re now working on fixing the last few remaining issues and putting the DiscFerret into production. Keep checking back, and feel free to join us in [http://webchat.freenode.net/?channels=discferret #discferret on irc.freenode.net] or on the [http://mail.discferret.com/mailman/listinfo/discferret-l_discferret.com DiscFerret e-mail discussion list]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you&amp;#039;re interested in developing software for the DiscFerret, or even just testing it and providing us with feedback, please contact Phil at phil@discferret.com. Parts are being procured, and several Limited Pre-production (LPP) units will be assembled for sale within the coming weeks. Get your orders in early, they&amp;#039;re sure to sell out fast!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR), Commodore 64, and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in [irc://irc.freenode.net/#discferret #discferret on irc.freenode.net].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.png|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;[https://twitter.com/#!/search/%23popsource #popsource]&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=Merlin2&amp;diff=418</id>
		<title>Merlin2</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=Merlin2&amp;diff=418"/>
				<updated>2012-05-20T01:07:11Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merlin 2 is the next-generation analysis software. Work on it is slated to start soon.&lt;br /&gt;
&lt;br /&gt;
This is for analyzing more difficult disks — whether slightly damaged, copy protected, of an unknown format, or whatnot.&lt;br /&gt;
&lt;br /&gt;
Current planned features:&lt;br /&gt;
&lt;br /&gt;
* There should be an easy way of loading one or more DFI (or other) flux images. Direct acquisition from the device should also be supported&lt;br /&gt;
* It should be possible to select multiple tracks to work on at a time, and to mask/filter unwanted tracks.&lt;br /&gt;
* Charts should be available, much like in the current Merlin1 prototype. It should be possible to &amp;quot;layer&amp;quot; multiple reads or multiple tracks, to correlate them (this would be useful for weak-bit protection as well as spiral-track protection, as well as for failing disks).&lt;br /&gt;
* A hex viewer should be available, showing the on-disk data using the selected decoder.&lt;br /&gt;
** Since the decode pipeline has multiple steps, it should be possible to view the &amp;quot;data&amp;quot; at any of these. So for example, GCR nybbles should be viewable, as well as decoded headers+data.&lt;br /&gt;
* Multiple data separator algorithms should be available (I believe philpem did some work on this).&lt;br /&gt;
** As a starting point: Naive (windowing), Adaptive Windowing, PJL-DPLL&lt;br /&gt;
* It should be relatively easy to add a new format decoder (use a scripting language maybe, python?).&lt;br /&gt;
&lt;br /&gt;
* Tool must be cross platform and easy enough to use — run on Windows, Mac, and Linux, as well as other POSIX-compliant operating systems.&lt;br /&gt;
** Current plan is to use a cross platform toolkit like wxWidgets, perhaps using wxPython — need feedback here.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=406</id>
		<title>DFI image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=406"/>
				<updated>2012-04-25T23:45:01Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* New-style images */   Fix another stupid logic bug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; DiscFerret software.&lt;br /&gt;
&lt;br /&gt;
== Overall format ==&lt;br /&gt;
&lt;br /&gt;
All integers in this file format are stored in big-endian form.&lt;br /&gt;
&lt;br /&gt;
The DFI file consists of a 4-byte magic string, followed by a series of disc sample blocks.&lt;br /&gt;
&lt;br /&gt;
The magic string is &amp;quot;DFER&amp;quot; for old-style DiscFerret images, or &amp;quot;DFE2&amp;quot; for new-style DiscFerret images.&lt;br /&gt;
&lt;br /&gt;
Each sample block has a header --&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
uint16_be cylinder;&lt;br /&gt;
uint16_be head;&lt;br /&gt;
uint16_be sector;&lt;br /&gt;
uint32_be data_length;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The cylinder number starts at zero and counts up to the number of cylinders on the disk. The head number follows the same rule (starts at zero, increments for each additional head). The sector number is optional, and only used for hard-sectored discs. For soft-sectored discs, it is set to zero. Data_length indicates the number of bytes of data which follow.&lt;br /&gt;
&lt;br /&gt;
== Decoding data ==&lt;br /&gt;
&lt;br /&gt;
=== Old-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if (byte AND 0x7f) == 0x00:&lt;br /&gt;
    carry = carry + 127&lt;br /&gt;
  else:&lt;br /&gt;
    emit((byte AND 0x7f) + carry)&lt;br /&gt;
    carry = 0&lt;br /&gt;
if carry &amp;gt; 0:&lt;br /&gt;
  emit(carry)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== New-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0   // running carry&lt;br /&gt;
abspos = 0  // absolute timing position in stream&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if ((byte AND 0x7f) == 0x7f):    // if lower 7 bit value is 0x7f&lt;br /&gt;
    carry = carry + 127            // ... then there was a carry&lt;br /&gt;
    abspos = abspos + 127&lt;br /&gt;
  else if (byte AND 0x80) != 0:    // if high bit set in byte&lt;br /&gt;
    carry = carry + (byte &amp;amp; 0x7F)  // add lower 7 bit value to carry and absolute-position&lt;br /&gt;
    abspos = abspos + (byte &amp;amp; 0x7F)&lt;br /&gt;
    add_index_position(abspos)     // this store was caused by an index pulse: save its absolute position&lt;br /&gt;
  else:                            // here byte &amp;lt; 0x7f&lt;br /&gt;
    emit((byte AND 0x7f) + carry)  // this store was caused by a data transition: store the time-delta since last transition&lt;br /&gt;
    abspos = abspos + (byte &amp;amp; 0x7F)&lt;br /&gt;
    carry = 0                      // reset carry&lt;br /&gt;
&lt;br /&gt;
// Carry may be nonzero at the end of this loop. In this case, there was an incomplete transition, which should be discarded.&lt;br /&gt;
&lt;br /&gt;
// emit()                 stores the timing delta for a data pulse&lt;br /&gt;
// add_index_position()   stores the absolute timing position of an index pulse&lt;br /&gt;
// &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=405</id>
		<title>DFI image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=405"/>
				<updated>2012-04-25T21:34:31Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* New-style images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; DiscFerret software.&lt;br /&gt;
&lt;br /&gt;
== Overall format ==&lt;br /&gt;
&lt;br /&gt;
All integers in this file format are stored in big-endian form.&lt;br /&gt;
&lt;br /&gt;
The DFI file consists of a 4-byte magic string, followed by a series of disc sample blocks.&lt;br /&gt;
&lt;br /&gt;
The magic string is &amp;quot;DFER&amp;quot; for old-style DiscFerret images, or &amp;quot;DFE2&amp;quot; for new-style DiscFerret images.&lt;br /&gt;
&lt;br /&gt;
Each sample block has a header --&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
uint16_be cylinder;&lt;br /&gt;
uint16_be head;&lt;br /&gt;
uint16_be sector;&lt;br /&gt;
uint32_be data_length;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The cylinder number starts at zero and counts up to the number of cylinders on the disk. The head number follows the same rule (starts at zero, increments for each additional head). The sector number is optional, and only used for hard-sectored discs. For soft-sectored discs, it is set to zero. Data_length indicates the number of bytes of data which follow.&lt;br /&gt;
&lt;br /&gt;
== Decoding data ==&lt;br /&gt;
&lt;br /&gt;
=== Old-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if (byte AND 0x7f) == 0x00:&lt;br /&gt;
    carry = carry + 127&lt;br /&gt;
  else:&lt;br /&gt;
    emit((byte AND 0x7f) + carry)&lt;br /&gt;
    carry = 0&lt;br /&gt;
if carry &amp;gt; 0:&lt;br /&gt;
  emit(carry)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== New-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0   // running carry&lt;br /&gt;
abspos = 0  // absolute timing position in stream&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if ((byte AND 0x7f) == 0x7f):    // if lower 7 bit value is 0x7f&lt;br /&gt;
    carry = carry + 127            // ... then there was a carry&lt;br /&gt;
    abspos = abspos + 127&lt;br /&gt;
  else if (byte AND 0x80) != 0:    // if high bit set in byte&lt;br /&gt;
    carry = carry + (byte &amp;amp; 0x7F)  // add lower 7 bit value to carry and absolute-position&lt;br /&gt;
    abspos = abspos + (byte &amp;amp; 0x7F)&lt;br /&gt;
    add_index_position(carry)      // this store was caused by an index pulse: save its absolute position&lt;br /&gt;
  else:                            // here byte &amp;lt; 0x7f&lt;br /&gt;
    emit((byte AND 0x7f) + carry)  // this store was caused by a data transition: store the time-delta since last transition&lt;br /&gt;
    abspos = abspos + (byte &amp;amp; 0x7F)&lt;br /&gt;
    carry = 0                      // reset carry&lt;br /&gt;
&lt;br /&gt;
// Carry may be nonzero at the end of this loop. In this case, there was an incomplete transition, which should be discarded.&lt;br /&gt;
&lt;br /&gt;
// emit()                 stores the timing delta for a data pulse&lt;br /&gt;
// add_index_position()   stores the absolute timing position of an index pulse&lt;br /&gt;
// &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=404</id>
		<title>DFI image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=404"/>
				<updated>2012-04-25T21:31:58Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* New-style images */   Fix to NEW-style decode algorithm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; DiscFerret software.&lt;br /&gt;
&lt;br /&gt;
== Overall format ==&lt;br /&gt;
&lt;br /&gt;
All integers in this file format are stored in big-endian form.&lt;br /&gt;
&lt;br /&gt;
The DFI file consists of a 4-byte magic string, followed by a series of disc sample blocks.&lt;br /&gt;
&lt;br /&gt;
The magic string is &amp;quot;DFER&amp;quot; for old-style DiscFerret images, or &amp;quot;DFE2&amp;quot; for new-style DiscFerret images.&lt;br /&gt;
&lt;br /&gt;
Each sample block has a header --&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
uint16_be cylinder;&lt;br /&gt;
uint16_be head;&lt;br /&gt;
uint16_be sector;&lt;br /&gt;
uint32_be data_length;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The cylinder number starts at zero and counts up to the number of cylinders on the disk. The head number follows the same rule (starts at zero, increments for each additional head). The sector number is optional, and only used for hard-sectored discs. For soft-sectored discs, it is set to zero. Data_length indicates the number of bytes of data which follow.&lt;br /&gt;
&lt;br /&gt;
== Decoding data ==&lt;br /&gt;
&lt;br /&gt;
=== Old-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if (byte AND 0x7f) == 0x00:&lt;br /&gt;
    carry = carry + 127&lt;br /&gt;
  else:&lt;br /&gt;
    emit((byte AND 0x7f) + carry)&lt;br /&gt;
    carry = 0&lt;br /&gt;
if carry &amp;gt; 0:&lt;br /&gt;
  emit(carry)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== New-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0   // running carry&lt;br /&gt;
abspos = 0  // absolute timing position in stream&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if ((byte AND 0x7f) == 0x7f):    // if lower 7 bit value is 0x7f&lt;br /&gt;
    carry = carry + 127            // ... then there was a carry&lt;br /&gt;
    abspos = abspos + 127&lt;br /&gt;
  else if (byte AND 0x80) != 0:    // if high bit set in byte&lt;br /&gt;
    carry = carry + (byte &amp;amp; 0x7F)  // add lower 7 bit value to carry and absolute-position&lt;br /&gt;
    abspos = abspos + (byte &amp;amp; 0x7F)&lt;br /&gt;
    add_index_position(carry)      // this store was caused by an index pulse: save its absolute position&lt;br /&gt;
  else:                            // here byte &amp;lt; 0x7f&lt;br /&gt;
    emit((byte AND 0x7f) + carry)  // this store was caused by a data transition: store the time-delta since last transition&lt;br /&gt;
    abspos = abspos + (byte &amp;amp; 0x7F)&lt;br /&gt;
    carry = 0                      // reset carry&lt;br /&gt;
&lt;br /&gt;
// Carry may be nonzero at the end of this loop. In this case, there was an incomplete transition, which should be discarded.&lt;br /&gt;
&lt;br /&gt;
// emit() stores the timing value&lt;br /&gt;
// add_index_position() stores the timing position of an index pulse&lt;br /&gt;
// &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=401</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=401"/>
				<updated>2012-04-21T22:51:17Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers -- we&amp;#039;re aiming for full production around mid-Summer or early Autumn! Keep checking back, and feel free to join us in [http://webchat.freenode.net/?channels=discferret #discferret on irc.freenode.net]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you&amp;#039;re interested in developing software for the DiscFerret, or even just testing it and providing us with feedback, please contact Phil at phil@discferret.com. Parts are being procured, and several Limited Pre-production (LPP) units will be assembled for sale within the coming weeks. Get your orders in early, they&amp;#039;re sure to sell out fast!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR) and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in [irc://irc.freenode.net/#discferret #discferret on irc.freenode.net].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.jpg|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;[https://twitter.com/#!/search/%23popsource #popsource]&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=393</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=393"/>
				<updated>2012-04-17T21:32:16Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers -- we&amp;#039;re aiming for full production around mid-Summer or early Autumn! Keep checking back, and feel free to join us in #discferret on irc.freenode.net!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you&amp;#039;re interested in developing software for the DiscFerret, please get in touch! Several Limited Pre-production (LPP) units are being assembled and will be available shortly!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR) and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in [irc://irc.freenode.net/#discferret #discferret on irc.freenode.net].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.jpg|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;#popsource&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=392</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=392"/>
				<updated>2012-04-17T21:31:44Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers -- we&amp;#039;re aiming for full production around mid-Summer or early Autumn! Keep checking back, and feel free to join us in #discferret on irc.freenode.net!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;If you&amp;#039;re interested in developing software for the DiscFerret, please get in touch! We still have several Limited Pre-production (LPP) units available!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR) and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in [irc://irc.freenode.net/#discferret #discferret on irc.freenode.net].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.jpg|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;#popsource&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=391</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=391"/>
				<updated>2012-04-17T21:30:57Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers -- we&amp;#039;re aiming for full production around mid-Summer or early Autumn! Keep checking back, and feel free to join us in #discferret on irc.freenode.net!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on almost any floppy disc, and most MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS, Apple (II and Mac GCR) and also more esoteric formats like those used on the Intel MDS/ISIS, Northstar and Sirius-Victor 9000 platforms. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged for later analysis.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE DiscFerret Hardware Access Library]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join us in [irc://irc.freenode.net/#discferret #discferret on irc.freenode.net].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.jpg|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-APR-17 -- We&amp;#039;ve been helping out the Prince of Persia Source Code Recovery Project! The DiscFerret Project supplied a DiscFerret 1A24 prototype unit, which successfully produced images of several source code disks. We&amp;#039;re now hard at work analysing and decoding the contents of these images... See the &amp;#039;#popsource&amp;#039; hash-tag on Twitter for more information! -- [[User:Philpem|Philpem]] 22:30, 17 April 2012 (BST)&lt;br /&gt;
&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=390</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=390"/>
				<updated>2012-04-17T21:25:06Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The first prototypes of the DiscFerret hardware are now in the hands of developers -- we&amp;#039;re aiming for full production around mid-Summer or early Autumn! Keep checking back, and feel free to join us in #discferret on irc.freenode.net!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on just about any floppy disc, and some MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS and the Intel MDS M2FM format. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware and software are released under the GNU GPL (in the case of the [http://hg.discferret.com/hardware/file/tip/LICENSE board], [http://hg.discferret.com/microcode/file/tip/COPYING microcode], and [http://hg.discferret.com/firmware/file/tip/COPYING firmware]) or the Apache Public Licence (in the case of the [http://hg.discferret.com/C-API/file/tip/LICENSE API]).&lt;br /&gt;
&lt;br /&gt;
An IRC channel for support and development has been established. Please join at [irc://irc.freenode.net/#discferret #discferret] on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Discferret_board_component_side_HD_c.jpg|center|600px|DiscFerret board]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=NorthStar_10-sector_formats&amp;diff=388</id>
		<title>NorthStar 10-sector formats</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=NorthStar_10-sector_formats&amp;diff=388"/>
				<updated>2012-03-13T23:13:07Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: fix error in DD format (thanks to Bob Pryor for reporting this)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc formats]]&lt;br /&gt;
&lt;br /&gt;
== Description and common features ==&lt;br /&gt;
&lt;br /&gt;
10-sector hard-sectored formats used by NorthStar NSDOS and CP/M systems (e.g. NorthStar Horizon and NorthStar Advantage).&lt;br /&gt;
&lt;br /&gt;
Two variants are known:&lt;br /&gt;
* Single Density (FM)&lt;br /&gt;
* Double Density (MFM)&lt;br /&gt;
&lt;br /&gt;
Both formats have 35 tracks, and 10 hardware-defined sectors.&lt;br /&gt;
&lt;br /&gt;
Things still unknown:&lt;br /&gt;
* Bit order of data -- is it LSB first, or MSB first?&lt;br /&gt;
* Byte order of data -- little or big endian? Does this matter?&lt;br /&gt;
* Description of check character computation is ambiguous. Need to find some example code e.g. Boot PROM to figure this out.&lt;br /&gt;
&lt;br /&gt;
== Single-density format ==&lt;br /&gt;
&lt;br /&gt;
References: [http://www.hartetechnologies.com/manuals/Northstar/North%20Star%20MDS-A-D%20Double%20Density%20Manual.pdf NorthStar MDS-A-D Manual] (p. 33)&lt;br /&gt;
&lt;br /&gt;
=== Encoding method ===&lt;br /&gt;
Frequency Modulation. Two transitions per bit-cell, one clock (always present), one data (present if data bit is a &amp;#039;1&amp;#039;, otherwise skipped). Data rate unknown.&lt;br /&gt;
&lt;br /&gt;
=== Track format ===&lt;br /&gt;
Each track consists of ten sectors, whose position is specified by hardware (hard-sector index pulses). The NorthStar hardware triggers off of the leading edge of an index pulse, then waits for 96 microseconds to pass before enabling the read/write circuitry (this is the &amp;#039;&amp;#039;&amp;#039;post index gap&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
Each sector contains, in order:&lt;br /&gt;
* 16 bytes, zeroes. These allow the PLO to synchronise itself to the incoming data stream&lt;br /&gt;
* 1 byte synchronisation character. Always 0xFB.&lt;br /&gt;
* 256 bytes of data (payload)&lt;br /&gt;
* 1 byte check character&lt;br /&gt;
&lt;br /&gt;
==== Check character computation ====&lt;br /&gt;
From the NorthStar MDS-A-D Manual:&lt;br /&gt;
 The check character is computed iteratively by setting it to zero and then exclusive ORing each successive data byte value with the current value of the check character and left cycling the result.&lt;br /&gt;
&lt;br /&gt;
This source code (from [http://www.hartetechnologies.com/manuals/Northstar/NSDOS.ASM Barry Watzman&amp;#039;s disassembly of NS-DOS]) makes it a little more obvious what&amp;#039;s really happening:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;READ	MOV	B,C		;MOVE 0 TO B&lt;br /&gt;
READ1	LDAX	D		;THIS IS THE ACTUAL DATA READ&lt;br /&gt;
	MOV	M,A		;STORE DATA IN MEMORY&lt;br /&gt;
	XRA	B		;I THINK THIS ADDS TO CKSUM&lt;br /&gt;
	RLC			;THIS TOO&lt;br /&gt;
	MOV	B,A		;MOVE PARTIAL CKSUM TO B&lt;br /&gt;
	INX	 H		;SET H FOR NEXT BYTE&lt;br /&gt;
	DCR	C		;GOING TO READ 256 BYTES &amp;amp; CKSUM&lt;br /&gt;
	JNZ	READ1		;READ MORE DATA&lt;br /&gt;
	LDAX	D		;READ THE CHECKSUM FROM DISK&lt;br /&gt;
	XRA	B		;COMPARE IT WITH CALCULATED CKSUM&lt;br /&gt;
	JZ	LE9C4		;IF THEY ARE SAME GO ON&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s also a disassembly of the Northstar boot PROM: http://www.sol20.org/northstar/nsboot.asm.&lt;br /&gt;
There are some other interesting Northstar files on the same site: http://www.sol20.org/programs.html#Northstar.&lt;br /&gt;
&lt;br /&gt;
What we can take away from this is:&lt;br /&gt;
&lt;br /&gt;
* The check character is initialised to zero when reading the sector&lt;br /&gt;
* Every data byte in the payload is first XORed with the current checksum, then the checksum is barrel-rotated left. See the explanation of the RLC instruction in [http://neil.franklin.ch/Info_Texts/Instruction_Set_8080 Neil Franklin&amp;#039;s 8080 instruction set reference] -- note that [http://www.textfiles.com/programming/CARDS/8080a Jonathan Bowen&amp;#039;s 8080A Reference Card] describes RLC as &amp;quot;Rotate Left, Circular&amp;quot;, which is a bit of a giveaway.&lt;br /&gt;
&lt;br /&gt;
Thus the C implementation of this algorithm would be something along the lines of:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
// UNTESTED code to calculate the cyclic check code for a Northstar disc sector&lt;br /&gt;
unsigned char northstar_crc(unsigned char last_crc, unsigned char data) {&lt;br /&gt;
  unsigned char crc = last_crc;&lt;br /&gt;
  crc += data;&lt;br /&gt;
  crc = ((crc &amp;lt;&amp;lt; 1)&amp;amp;0xfe) | ((crc &amp;gt;&amp;gt; 7)&amp;amp;1);&lt;br /&gt;
  return crc;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Double-density format ==&lt;br /&gt;
References: [http://www.hartetechnologies.com/manuals/Northstar/North%20Star%20MDS-A-D%20Double%20Density%20Manual.pdf NorthStar MDS-A-D Manual] (p. 33)&lt;br /&gt;
&lt;br /&gt;
=== Encoding method ===&lt;br /&gt;
Modified Frequency Modulation. Two transitions per bit-cell, one clock (only present if the previous and current data bits are both zero), one data (present if data bit is a &amp;#039;1&amp;#039;, otherwise skipped). Data rate unknown.&lt;br /&gt;
&lt;br /&gt;
=== Track format ===&lt;br /&gt;
Each track consists of ten sectors, whose position is specified by hardware (hard-sector index pulses). The NorthStar hardware triggers off of the leading edge of an index pulse, then waits for 96 microseconds to pass before enabling the read/write circuitry (this is the &amp;#039;&amp;#039;&amp;#039;post index gap&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
Each sector contains, in order:&lt;br /&gt;
* 32 bytes, zeroes. These allow the PLO to synchronise itself to the incoming data stream&lt;br /&gt;
* 2 synchronisation bytes. Always 0xFB.&lt;br /&gt;
* 512 bytes of data (payload)&lt;br /&gt;
* 1 byte check character&lt;br /&gt;
&lt;br /&gt;
The check character is computed as per the Single-Density NorthStar format.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=381</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=381"/>
				<updated>2012-01-15T18:30:56Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on just about any floppy disc, and some MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS and the Intel MDS M2FM format. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware is licensed under a semi-permissive licence, while the software is released under the GNU GPL (in the case of the microcode and firmware) or the Apache Public Licence (in the case of the API).&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=378</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=378"/>
				<updated>2012-01-11T21:50:15Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on just about any floppy disc, and some MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS and the Intel MDS M2FM format. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware is licensed under a semi-permissive licence, while the software is released either under the GNU GPL or the Apache Public Licence.&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2012-JAN-11 -- DiscFerret Microcode 0028 and C API v1.5 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. These releases fix several critical microcode bugs -- users should update to these releases as soon as possible. --[[User:Philpem|Philpem]] 21:50, 11 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=377</id>
		<title>DiscFerret:Downloads</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=377"/>
				<updated>2012-01-11T21:48:04Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: Mcode 0028, Libdiscferret 1.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:DiscFerret]]&lt;br /&gt;
&lt;br /&gt;
== Access libraries ==&lt;br /&gt;
&lt;br /&gt;
=== libdiscferret (C library) ===&lt;br /&gt;
&lt;br /&gt;
Libdiscferret allows applications written in C or C++ to access the DiscFerret, without having to worry about USB transaction management, packetisation and other low-level issues. It is known to run on any UNIX platform which provides the [http://www.libusb.org/ libusb-1.0] API. At the time of writing, this includes:&lt;br /&gt;
* Linux&lt;br /&gt;
* FreeBSD 8 (or later)&lt;br /&gt;
* Mac OS X (Darwin) -- tested and known to work on Lion, but believed to work on Snow Leopard as well (feedback would be appreciated)&lt;br /&gt;
&lt;br /&gt;
To build it:&lt;br /&gt;
 tar -zxf libdiscferret-&amp;#039;&amp;#039;version&amp;#039;&amp;#039;.tar.gz&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
To install it:&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
By default, the libraries and headers are installed in /usr/local/lib and /usr/local/include respectively. To change this, append &amp;quot;PREFIX=path&amp;quot; to both the &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot; commands. For example, to install in &amp;#039;&amp;#039;/opt/discferret&amp;#039;&amp;#039;, use these commands:&lt;br /&gt;
&lt;br /&gt;
 make PREFIX=/opt/discferret&lt;br /&gt;
 make install PREFIX=/opt/discferret&lt;br /&gt;
&lt;br /&gt;
The latest version is &amp;#039;&amp;#039;&amp;#039;Release 1.5&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from here: [http://www.discferret.com/downloads/libdiscferret-1.5.tar.gz libdiscferret-1.5.tar.gz].&lt;br /&gt;
&lt;br /&gt;
==== Change history ====&lt;br /&gt;
&lt;br /&gt;
===== Release 1.5 =====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CRITICAL UPDATE!&amp;#039;&amp;#039;&amp;#039; -- Everyone should immediately update to this version.&lt;br /&gt;
&lt;br /&gt;
* update microcode to REL_0028&lt;br /&gt;
* Bugfix: Properly handle situations where INDEX goes active on the same clock cycle as a flux transition&lt;br /&gt;
* Bugfix: Missed INDEX transitions were not stored in the ACQ RAM&lt;br /&gt;
* Implement test benches for disc reader core (more testbenches to add later)&lt;br /&gt;
* Update email addresses in microcode sources&lt;br /&gt;
&lt;br /&gt;
===== Release 1.4 =====&lt;br /&gt;
* update microcode to REL_0027&lt;br /&gt;
* Bugfix: if the disc-reader counter overflowed at exactly the same time a data or index pulse arrived, the overflow byte would be stored but the timing byte would be discarded. This corrupts the incoming data stream, rendering it useless.&lt;br /&gt;
* Completely new disc reader engine -- massively simplified the logic, debugged, and tested extensively with Icarus Verilog.&lt;br /&gt;
* Fix a nasty clock-enable bug in the microcode -- if the acquisition clock was less than 100MHz, carries may be repeated multiple times.&lt;br /&gt;
&lt;br /&gt;
===== Release 1.3 =====&lt;br /&gt;
* update microcode to REL_0026&lt;br /&gt;
* fix bad syntax in register header (ahem)&lt;br /&gt;
* update registers for microcode 0025 and later&lt;br /&gt;
* fix building of test application&lt;br /&gt;
* update udev rules for newer versions of udev&lt;br /&gt;
* Add udev rules file for DiscFerret devices&lt;br /&gt;
* hide output from rm during solib link&lt;br /&gt;
* fix makefile so libdiscferret also builds on Linux&lt;br /&gt;
* add idplatform.sh (req&amp;#039;d for new build system)&lt;br /&gt;
* Changes to allow libdiscferret to build on Mac OS X&lt;br /&gt;
* More fixes to use stdlib.h instead of malloc.h&lt;br /&gt;
* use stdlib.h instead of malloc.h (ooops!)&lt;br /&gt;
* fix uninitialized value warning&lt;br /&gt;
* tag release builds in the copyright notice, not just debug builds&lt;br /&gt;
* separate building of docs from main library&lt;br /&gt;
* Add missing microcode image (RBF file) and a README&lt;br /&gt;
* BUGFIX: fix issues with accidental double-stepping&lt;br /&gt;
* increase USB timeout to 1 second (from 100ms)&lt;br /&gt;
* fix issue with discferret_microcode.o not being linked into solib&lt;br /&gt;
* fixes for const-correctness, bump version to 1.2r2&lt;br /&gt;
* Include local copy of the DiscFerret microcode&lt;br /&gt;
* use DISCFERRET_ERROR enum where appropriate&lt;br /&gt;
&lt;br /&gt;
===== Release 1.1r1 =====&lt;br /&gt;
&lt;br /&gt;
* Add support for the &amp;quot;Track 0 Reached During Seek&amp;quot; status bit&lt;br /&gt;
* Add discferret_seek_* functions to simplify head seek operations&lt;br /&gt;
&lt;br /&gt;
== Microcode ==&lt;br /&gt;
&lt;br /&gt;
Microcode bundles (RBF files) are included with release versions of the C and Python APIs. Generally speaking, you should only use the microcode version which was included with a given version of the API. To upgrade to a later microcode version, upgrade the API.&lt;br /&gt;
&lt;br /&gt;
For reference, the latest &amp;#039;release&amp;#039; Microcode is &amp;#039;&amp;#039;&amp;#039;version 0028&amp;#039;&amp;#039;&amp;#039;, which is available to download here: [http://www.discferret.com/downloads/microcode_0028.rbf microcode_0028.rbf].&lt;br /&gt;
&lt;br /&gt;
=== Microcode change log ===&lt;br /&gt;
&lt;br /&gt;
==== Rev 0028 (2012-JAN-11) ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CRITICAL UPDATE&amp;#039;&amp;#039;&amp;#039; -- included in libdiscferret 1.5&lt;br /&gt;
* Multiple fixes for disc reader engine (missing transition and missed-transition delay-slot logic).&lt;br /&gt;
&lt;br /&gt;
==== Rev 0027 (2012-JAN-07) ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CRITICAL UPDATE&amp;#039;&amp;#039;&amp;#039; -- included in libdiscferret 1.4&lt;br /&gt;
* New disc reader engine (simplified and bugfixed)&lt;br /&gt;
* Major bug-fix: if a carry occurs at the same time a data pulse arrives, the data pulse will be ignored.&lt;br /&gt;
&lt;br /&gt;
==== Rev 0026 (2011-DEC-31) ====&lt;br /&gt;
* fix clock divider logic&lt;br /&gt;
* Move ACQ clocksel bits to separate register, bump version to 0025&lt;br /&gt;
* Fix sync-word detector PJL counter value&lt;br /&gt;
* Data separator rewrite.&lt;br /&gt;
* Refactor data separator to use clock enable instead of divider, redesign sync logic&lt;br /&gt;
* Add clock divider for data acquisition engine&lt;br /&gt;
&lt;br /&gt;
==== Rev 0021 (2011-MAR-21) ====&lt;br /&gt;
&lt;br /&gt;
* Add &amp;quot;track 0 reached during seek&amp;quot; status bit.&lt;br /&gt;
* Improve seek logic to prevent &amp;quot;over-stepping&amp;quot; (seeking to a track below Track 0).&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
The latest firmware package is &amp;#039;&amp;#039;&amp;#039;version 001C&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from [http://www.discferret.com/downloads/discferret_firmware_001c.hex here].&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
&lt;br /&gt;
==== Version 001C (2011-FEB-13) ====&lt;br /&gt;
* Fix a serious bug relating to USB hot-plugging. If the DiscFerret was powered up before the USB cable was connected, then the USB stack may not start up correctly. Additionally, if the USB cable is unplugged while the DiscFerret is powered up, the USB PHY may lose sync with the host.&lt;br /&gt;
&lt;br /&gt;
=== Identifying the firmware version your DiscFerret is running ===&lt;br /&gt;
To identify the current firmware version of your DiscFerret (and its MCU Serial Number), use the &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039; tool from the Firmware Source Code archive:&lt;br /&gt;
&lt;br /&gt;
 ./id_program.py --info&lt;br /&gt;
&lt;br /&gt;
This will display a screen similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Device opened successfully&lt;br /&gt;
Device information:&lt;br /&gt;
	product:        DiscFerret magnetic disc analyser&lt;br /&gt;
	microcode_ver:  0x0020&lt;br /&gt;
	serialnumber:   TARKA&lt;br /&gt;
	firmware_ver:   0x001B&lt;br /&gt;
	microcode_type: 0xDD55&lt;br /&gt;
	hardware_rev:   0I06&lt;br /&gt;
	manufacturer:   Red Fox Engineering&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Microcode Type and Microcode Version will only be valid if a microcode bundle has been uploaded to the DiscFerret (i.e. if an application which uses the DiscFerret has already been run). If the Microcode Type is anything other than `0xDD55`, then the microcode version will not be valid. Device information can only be queried when the DiscFerret is running the operating firmware; the bootloader has no support for firmware version querying.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading the firmware ===&lt;br /&gt;
&lt;br /&gt;
To upgrade the firmware on a DiscFerret, you will need a copy of the &amp;quot;mphidflash&amp;quot; program from [http://code.google.com/p/mphidflash/ http://code.google.com/p/mphidflash/].&lt;br /&gt;
&lt;br /&gt;
The upgrade procedure is as follows:&lt;br /&gt;
&lt;br /&gt;
# Disconnect the USB and power cables from the DiscFerret.&lt;br /&gt;
# Install a jumper cap over the two-pin header marked &amp;quot;BOOT&amp;quot;.&lt;br /&gt;
# Reconnect the USB cable, then the power cable.&lt;br /&gt;
# The amber &amp;quot;MCU Status&amp;quot; LED should now be blinking rapidly.&lt;br /&gt;
# Copy the firmware HEX file and mphidflash into the same directory.&lt;br /&gt;
# From a command prompt, change into the directory containing mphidflash (e.g. `cd mphidflash`).&lt;br /&gt;
# On Linux, run the following command: &amp;lt;pre&amp;gt;./mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# On Windows, run the following command: &amp;lt;pre&amp;gt;mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# Unplug the DiscFerret, remove the BOOT jumper, then reconnect the USB and power cables (in that order). Your DiscFerret should now be running the latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Bootloader ==&lt;br /&gt;
&lt;br /&gt;
If the DiscFerret will not enter the bootloader even with the BOOT jumper installed, the bootloader may have become corrupted. In normal use, this should not be possible. It is, however, still possible to recover the DiscFerret, as long as you have a suitable PIC programmer. To do this, five wires must be soldered to the programming pads on the bottom of the DiscFerret PCB, and a PIC programmer (e.g. a Microchip PICKit 2) is connected to these wires. See the DiscFerret circuit diagram for the pin configuration of these pads.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE: The DiscFerret uses a PIC18F85J50 microcontroller, which uses 3.3V Low Voltage Programming. Make ABSOLUTELY SURE your PIC programmer supports this programming mode (the PICKit 2, PICKit 3 and ICD3 do; the ICD2 &amp;#039;&amp;#039;DOES NOT&amp;#039;&amp;#039;), and that the device is set to &amp;quot;PIC18F85J50&amp;quot; (NOT auto-detect). Failure to follow these instructions WILL destroy the microcontroller IC!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
After reprogramming the bootloader, the Unit Serial Number must be reprogrammed using &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039;, which is included in the Firmware Source-Code Bundle, under the &amp;quot;test&amp;quot; directory. You will need to install the Python LibUSB wrapper library (on an Ubuntu Linux system, this is in the package `python-usb`) in order to use this tool.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DISCLAIMER: Damage caused by incorrectly reflashing the bootloader is NOT covered by the warranty! If you are not confident in your abilities, contact Red Fox Engineering to arrange for your DiscFerret to be re-programmed (a small charge may be made in order to cover postage and packing costs).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bootloader HEX file: [http://www.discferret.com/downloads/discferret_bootloader.hex Bootloader Release 1.0 Final].&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=376</id>
		<title>DiscFerret:Downloads</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=376"/>
				<updated>2012-01-07T23:59:07Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:DiscFerret]]&lt;br /&gt;
&lt;br /&gt;
== Access libraries ==&lt;br /&gt;
&lt;br /&gt;
=== libdiscferret (C library) ===&lt;br /&gt;
&lt;br /&gt;
Libdiscferret allows applications written in C or C++ to access the DiscFerret, without having to worry about USB transaction management, packetisation and other low-level issues. It is known to run on any UNIX platform which provides the [http://www.libusb.org/ libusb-1.0] API. At the time of writing, this includes:&lt;br /&gt;
* Linux&lt;br /&gt;
* FreeBSD 8 (or later)&lt;br /&gt;
* Mac OS X (Darwin)&lt;br /&gt;
&lt;br /&gt;
To build it:&lt;br /&gt;
 tar -zxf libdiscferret-1.4.tar.gz&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
To install it:&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
By default, the libraries and headers are installed in /usr/local/lib and /usr/local/include respectively. To change this, append &amp;quot;PREFIX=path&amp;quot; to both the &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot; commands. For example, to install in &amp;#039;&amp;#039;/opt/discferret&amp;#039;&amp;#039;, use these commands:&lt;br /&gt;
&lt;br /&gt;
 make PREFIX=/opt/discferret&lt;br /&gt;
 make install PREFIX=/opt/discferret&lt;br /&gt;
&lt;br /&gt;
The latest version is &amp;#039;&amp;#039;&amp;#039;Release 1.4&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from here: [http://www.discferret.com/downloads/libdiscferret-1.4.tar.gz libdiscferret-1.4.tar.gz].&lt;br /&gt;
&lt;br /&gt;
==== Change history ====&lt;br /&gt;
&lt;br /&gt;
===== Release 1.4 =====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CRITICAL UPDATE!&amp;#039;&amp;#039;&amp;#039; -- Everyone should immediately update to this version.&lt;br /&gt;
&lt;br /&gt;
* update microcode to REL_0027&lt;br /&gt;
* Bugfix: if the disc-reader counter overflowed at exactly the same time a data or index pulse arrived, the overflow byte would be stored but the timing byte would be discarded. This corrupts the incoming data stream, rendering it useless.&lt;br /&gt;
* Completely new disc reader engine -- massively simplified the logic, debugged, and tested extensively with Icarus Verilog.&lt;br /&gt;
* Fix a nasty clock-enable bug in the microcode -- if the acquisition clock was less than 100MHz, carries may be repeated multiple times.&lt;br /&gt;
&lt;br /&gt;
===== Release 1.3 =====&lt;br /&gt;
* update microcode to REL_0026&lt;br /&gt;
* fix bad syntax in register header (ahem)&lt;br /&gt;
* update registers for microcode 0025 and later&lt;br /&gt;
* fix building of test application&lt;br /&gt;
* update udev rules for newer versions of udev&lt;br /&gt;
* Add udev rules file for DiscFerret devices&lt;br /&gt;
* hide output from rm during solib link&lt;br /&gt;
* fix makefile so libdiscferret also builds on Linux&lt;br /&gt;
* add idplatform.sh (req&amp;#039;d for new build system)&lt;br /&gt;
* Changes to allow libdiscferret to build on Mac OS X&lt;br /&gt;
* More fixes to use stdlib.h instead of malloc.h&lt;br /&gt;
* use stdlib.h instead of malloc.h (ooops!)&lt;br /&gt;
* fix uninitialized value warning&lt;br /&gt;
* tag release builds in the copyright notice, not just debug builds&lt;br /&gt;
* separate building of docs from main library&lt;br /&gt;
* Add missing microcode image (RBF file) and a README&lt;br /&gt;
* BUGFIX: fix issues with accidental double-stepping&lt;br /&gt;
* increase USB timeout to 1 second (from 100ms)&lt;br /&gt;
* fix issue with discferret_microcode.o not being linked into solib&lt;br /&gt;
* fixes for const-correctness, bump version to 1.2r2&lt;br /&gt;
* Include local copy of the DiscFerret microcode&lt;br /&gt;
* use DISCFERRET_ERROR enum where appropriate&lt;br /&gt;
&lt;br /&gt;
===== Release 1.1r1 =====&lt;br /&gt;
&lt;br /&gt;
* Add support for the &amp;quot;Track 0 Reached During Seek&amp;quot; status bit&lt;br /&gt;
* Add discferret_seek_* functions to simplify head seek operations&lt;br /&gt;
&lt;br /&gt;
== Microcode ==&lt;br /&gt;
&lt;br /&gt;
Microcode bundles (RBF files) are included with release versions of the C and Python APIs. Generally speaking, you should only use the microcode version which was included with a given version of the API. To upgrade to a later microcode version, upgrade the API.&lt;br /&gt;
&lt;br /&gt;
For reference, the latest &amp;#039;release&amp;#039; Microcode is &amp;#039;&amp;#039;&amp;#039;version 0027&amp;#039;&amp;#039;&amp;#039;, which is available to download here: [http://www.discferret.com/downloads/microcode_0027.rbf microcode_0027.rbf].&lt;br /&gt;
&lt;br /&gt;
=== Microcode change log ===&lt;br /&gt;
&lt;br /&gt;
==== Rev 0027 (2012-JAN-07) ====&lt;br /&gt;
* New disc reader engine (simplified and bugfixed)&lt;br /&gt;
* Major bug-fix: if a carry occurs at the same time a data pulse arrives, the data pulse will be ignored.&lt;br /&gt;
&lt;br /&gt;
==== Rev 0026 (2011-DEC-31) ====&lt;br /&gt;
* fix clock divider logic&lt;br /&gt;
* Move ACQ clocksel bits to separate register, bump version to 0025&lt;br /&gt;
* Fix sync-word detector PJL counter value&lt;br /&gt;
* Data separator rewrite.&lt;br /&gt;
* Refactor data separator to use clock enable instead of divider, redesign sync logic&lt;br /&gt;
* Add clock divider for data acquisition engine&lt;br /&gt;
&lt;br /&gt;
==== Rev 0021 (2011-MAR-21) ====&lt;br /&gt;
&lt;br /&gt;
* Add &amp;quot;track 0 reached during seek&amp;quot; status bit.&lt;br /&gt;
* Improve seek logic to prevent &amp;quot;over-stepping&amp;quot; (seeking to a track below Track 0).&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
The latest firmware package is &amp;#039;&amp;#039;&amp;#039;version 001C&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from [http://www.discferret.com/downloads/discferret_firmware_001c.hex here].&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
&lt;br /&gt;
==== Version 001C (2011-FEB-13) ====&lt;br /&gt;
* Fix a serious bug relating to USB hot-plugging. If the DiscFerret was powered up before the USB cable was connected, then the USB stack may not start up correctly. Additionally, if the USB cable is unplugged while the DiscFerret is powered up, the USB PHY may lose sync with the host.&lt;br /&gt;
&lt;br /&gt;
=== Identifying the firmware version your DiscFerret is running ===&lt;br /&gt;
To identify the current firmware version of your DiscFerret (and its MCU Serial Number), use the &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039; tool from the Firmware Source Code archive:&lt;br /&gt;
&lt;br /&gt;
 ./id_program.py --info&lt;br /&gt;
&lt;br /&gt;
This will display a screen similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Device opened successfully&lt;br /&gt;
Device information:&lt;br /&gt;
	product:        DiscFerret magnetic disc analyser&lt;br /&gt;
	microcode_ver:  0x0020&lt;br /&gt;
	serialnumber:   TARKA&lt;br /&gt;
	firmware_ver:   0x001B&lt;br /&gt;
	microcode_type: 0xDD55&lt;br /&gt;
	hardware_rev:   0I06&lt;br /&gt;
	manufacturer:   Red Fox Engineering&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Microcode Type and Microcode Version will only be valid if a microcode bundle has been uploaded to the DiscFerret (i.e. if an application which uses the DiscFerret has already been run). If the Microcode Type is anything other than `0xDD55`, then the microcode version will not be valid. Device information can only be queried when the DiscFerret is running the operating firmware; the bootloader has no support for firmware version querying.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading the firmware ===&lt;br /&gt;
&lt;br /&gt;
To upgrade the firmware on a DiscFerret, you will need a copy of the &amp;quot;mphidflash&amp;quot; program from [http://code.google.com/p/mphidflash/ http://code.google.com/p/mphidflash/].&lt;br /&gt;
&lt;br /&gt;
The upgrade procedure is as follows:&lt;br /&gt;
&lt;br /&gt;
# Disconnect the USB and power cables from the DiscFerret.&lt;br /&gt;
# Install a jumper cap over the two-pin header marked &amp;quot;BOOT&amp;quot;.&lt;br /&gt;
# Reconnect the USB cable, then the power cable.&lt;br /&gt;
# The amber &amp;quot;MCU Status&amp;quot; LED should now be blinking rapidly.&lt;br /&gt;
# Copy the firmware HEX file and mphidflash into the same directory.&lt;br /&gt;
# From a command prompt, change into the directory containing mphidflash (e.g. `cd mphidflash`).&lt;br /&gt;
# On Linux, run the following command: &amp;lt;pre&amp;gt;./mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# On Windows, run the following command: &amp;lt;pre&amp;gt;mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# Unplug the DiscFerret, remove the BOOT jumper, then reconnect the USB and power cables (in that order). Your DiscFerret should now be running the latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Bootloader ==&lt;br /&gt;
&lt;br /&gt;
If the DiscFerret will not enter the bootloader even with the BOOT jumper installed, the bootloader may have become corrupted. In normal use, this should not be possible. It is, however, still possible to recover the DiscFerret, as long as you have a suitable PIC programmer. To do this, five wires must be soldered to the programming pads on the bottom of the DiscFerret PCB, and a PIC programmer (e.g. a Microchip PICKit 2) is connected to these wires. See the DiscFerret circuit diagram for the pin configuration of these pads.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE: The DiscFerret uses a PIC18F85J50 microcontroller, which uses 3.3V Low Voltage Programming. Make ABSOLUTELY SURE your PIC programmer supports this programming mode (the PICKit 2, PICKit 3 and ICD3 do; the ICD2 &amp;#039;&amp;#039;DOES NOT&amp;#039;&amp;#039;), and that the device is set to &amp;quot;PIC18F85J50&amp;quot; (NOT auto-detect). Failure to follow these instructions WILL destroy the microcontroller IC!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
After reprogramming the bootloader, the Unit Serial Number must be reprogrammed using &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039;, which is included in the Firmware Source-Code Bundle, under the &amp;quot;test&amp;quot; directory. You will need to install the Python LibUSB wrapper library (on an Ubuntu Linux system, this is in the package `python-usb`) in order to use this tool.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DISCLAIMER: Damage caused by incorrectly reflashing the bootloader is NOT covered by the warranty! If you are not confident in your abilities, contact Red Fox Engineering to arrange for your DiscFerret to be re-programmed (a small charge may be made in order to cover postage and packing costs).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bootloader HEX file: [http://www.discferret.com/downloads/discferret_bootloader.hex Bootloader Release 1.0 Final].&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=MediaWiki:Sidebar&amp;diff=375</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=MediaWiki:Sidebar&amp;diff=375"/>
				<updated>2012-01-07T23:33:09Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** DiscFerret:Downloads|Downloads&lt;br /&gt;
** DiscFerret:FAQ|FAQ&lt;br /&gt;
** http://mail.discferret.com/mailman/listinfo/discferret-l_discferret.com|Mailing list&lt;br /&gt;
** http://hg.discferret.com|Source code repository&lt;br /&gt;
** http://mantis.discferret.com|Bug tracker (Mantis)&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=Credits&amp;diff=374</id>
		<title>Credits</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=Credits&amp;diff=374"/>
				<updated>2012-01-07T21:29:07Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Credits and acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;If you update this page, please sign your additions with: &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The DiscFerret team would like to extend their thanks to every single one of the people who bought a DiscFerret, anyone who threw money at us without asking for a DiscFerret (or in some cases anything) in return, and everyone on the Classiccmp mailing lists who participated in the many and varied DiscFerret threads.&lt;br /&gt;
&lt;br /&gt;
Without you guys, the DiscFerret would never have come to be. You guys are awesome, and I seriously value every bit of feedback, every email, and every comment on the IRC channel and the various message boards. You people are the reason the DiscFerret has gotten to be as good as it has, and why it keeps on improving. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
The DiscFerret team would also like to thank the following people and companies for their assistance during the development of the DiscFerret.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The Icarus Verilog and GTKWave Projects&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;Your Verilog simulator and waveform viewer are second to none, are easy to use, and continually make ModelSim look like a (very expensive) toy. Were it not for these tools, DiscFerret design verification would have taken a lot longer. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Rob Northen&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;Copylock repeatedly broke the old disc reader engine. It no longer does. Thanks for exposing the bugs in my HDL code! (-Phil)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sarayan&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Lord Nightmare&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Balrog&amp;#039;&amp;#039;&amp;#039; (in no particular order)&amp;lt;br /&amp;gt;For occupying #discferret@irc.freenode.net, providing test data, breaking stuff and suggesting fixes. I couldn&amp;#039;t ask for a better development team. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Michelle Van Zandt&amp;#039;&amp;#039;&amp;#039; (http://graphix.ginpu.us)&amp;lt;br/&amp;gt;The graphic designer who created the DiscFerret logo. You did an excellent job, Michelle. Seriously. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bioware&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;I don&amp;#039;t know if I should thank you or curse you. Mass Effect is far more addictive than it should be...! --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TotalPhase&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;I really don&amp;#039;t know what I&amp;#039;d have done without the Beagle USB480. Probably torn my hair out several times over trying to debug the Microchip USB stack. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Microchip Technology&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;I sent you a bug report for the USB stack, and within a week or so you&amp;#039;d sent me a workaround. The bug was fixed in the next release. I really can&amp;#039;t argue with customer service like that (especially when other semiconductor companies were trying to get rid of me as quickly as possible)! --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
The DiscFerret team would also like to extend rude gestures and curses to the following entities:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Altera&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;Your FPGAs are great, are easier to find than Xilinx parts, and your synthesis software is awesome. &amp;#039;&amp;#039;&amp;#039;BUT YOUR DESIGN VERIFICATION TOOLS SUCK!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;Really. SignalTap has been broken since 10.0, that&amp;#039;s two major revisions at the time of writing. JTAG still doesn&amp;#039;t work reliably on Linux with a USB Blaster. Your tools have wasted enough of my time that I&amp;#039;m seriously considering using Xilinx parts for my next design. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The USB Implementers&amp;#039; Forum (USB-IF)&amp;#039;&amp;#039;&amp;#039; (or as I prefer to call them, the USB Impairment Forum)&amp;lt;br/&amp;gt;For making it so difficult and so expensive to get a USB Vendor ID. Is it any wonder that nearly every backstreet Chinese manufacturer just picks a random VID and uses it? I mean, $2000 for a number?! I don&amp;#039;t need 65536 PIDs, I need maybe 128 at most. Do what the IEEE do with OUIs -- sell smaller blocks for a hundred dollars or so. I don&amp;#039;t care about being able to use your stupid logo, I just want to make USB devices which don&amp;#039;t conflict with anyone else&amp;#039;s. For bonus points, the non-logo license fee has &amp;#039;&amp;#039;&amp;#039;doubled&amp;#039;&amp;#039;&amp;#039; to $2,000 per year. Where do you guys get off? --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=Credits&amp;diff=373</id>
		<title>Credits</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=Credits&amp;diff=373"/>
				<updated>2012-01-07T21:28:04Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: Created page with &amp;quot;== Credits and acknowledgements ==  &amp;#039;&amp;#039;If you update this page, please sign your additions with: &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;  The DiscFerret team would like to extend their thanks t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Credits and acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;If you update this page, please sign your additions with: &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The DiscFerret team would like to extend their thanks to every single one of the people who bought a DiscFerret, anyone who threw money at us without asking for a DiscFerret (or in some cases anything) in return, and everyone on the Classiccmp mailing lists who participated in the many and varied DiscFerret threads.&lt;br /&gt;
&lt;br /&gt;
Without you guys, the DiscFerret would never have come to be. You guys are awesome, and I seriously value every bit of feedback, every email, and every comment on the IRC channel and the various message boards. You people are the reason the DiscFerret has gotten to be as good as it has, and why it keeps on improving. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
The DiscFerret team would also like to thank the following people and companies for their assistance during the development of the DiscFerret.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The Icarus Verilog and GTKWave Projects&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;Your Verilog simulator and waveform viewer are second to none, are easy to use, and continually make ModelSim look like a (very expensive) toy. Were it not for these tools, DiscFerret design verification would have taken a lot longer. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Rob Northen&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;Copylock repeatedly broke the old disc reader engine. It no longer does. Thanks for exposing the bugs in my HDL code! (-Phil)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sarayan&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Lord Nightmare&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Balrog&amp;#039;&amp;#039;&amp;#039; (in no particular order)&amp;lt;br /&amp;gt;For occupying #discferret@irc.freenode.net, providing test data, breaking stuff and suggesting fixes. I couldn&amp;#039;t ask for a better development team. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Michelle Van Zandt&amp;#039;&amp;#039;&amp;#039; (http://graphix.ginpu.us)&amp;lt;br/&amp;gt;The graphic designer who created the DiscFerret logo. You did an excellent job, Michelle. Seriously. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bioware&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;I don&amp;#039;t know if I should thank you or curse you. Mass Effect is far more addictive than it should be...! --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TotalPhase&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;I really don&amp;#039;t know what I&amp;#039;d have done without the Beagle USB480. Probably torn my hair out several times over trying to debug the Microchip USB stack. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Microchip Technology&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;I gave you a bug report for the USB stack, and within a week or so you&amp;#039;d sent me a workaround. The bug was fixed in the next release. I really can&amp;#039;t argue with customer service like that! You need to work on testing your appnote software a bit better, though, and the USB Stack docs are a mess. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
The DiscFerret team would also like to extend rude gestures and curses to the following entities:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Altera&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;Your FPGAs are great, are easier to find than Xilinx parts, and your synthesis software is awesome. &amp;#039;&amp;#039;&amp;#039;BUT YOUR DESIGN VERIFICATION TOOLS SUCK!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;Really. SignalTap has been broken since 10.0, that&amp;#039;s two major revisions at the time of writing. JTAG still doesn&amp;#039;t work reliably on Linux with a USB Blaster. Your tools have wasted enough of my time that I&amp;#039;m seriously considering using Xilinx parts for my next design. --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The USB Implementers&amp;#039; Forum (USB-IF)&amp;#039;&amp;#039;&amp;#039; (or as I prefer to call them, the USB Impairment Forum)&amp;lt;br/&amp;gt;For making it so difficult and so expensive to get a USB Vendor ID. Is it any wonder that nearly every backstreet Chinese manufacturer just picks a random VID and uses it? I mean, $2000 for a number?! I don&amp;#039;t need 65536 PIDs, I need maybe 128 at most. Do what the IEEE do with OUIs -- sell smaller blocks for a hundred dollars or so. I don&amp;#039;t care about being able to use your stupid logo, I just want to make USB devices which don&amp;#039;t conflict with anyone else&amp;#039;s. For bonus points, the non-logo license fee has &amp;#039;&amp;#039;&amp;#039;doubled&amp;#039;&amp;#039;&amp;#039; to $2,000 per year. Where do you guys get off? --[[User:Philpem|Philpem]] 21:28, 7 January 2012 (GMT)&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=372</id>
		<title>DFI image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=372"/>
				<updated>2012-01-07T18:27:23Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; DiscFerret software.&lt;br /&gt;
&lt;br /&gt;
== Overall format ==&lt;br /&gt;
&lt;br /&gt;
All integers in this file format are stored in big-endian form.&lt;br /&gt;
&lt;br /&gt;
The DFI file consists of a 4-byte magic string, followed by a series of disc sample blocks.&lt;br /&gt;
&lt;br /&gt;
The magic string is &amp;quot;DFER&amp;quot; for old-style DiscFerret images, or &amp;quot;DFE2&amp;quot; for new-style DiscFerret images.&lt;br /&gt;
&lt;br /&gt;
Each sample block has a header --&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
uint16_be cylinder;&lt;br /&gt;
uint16_be head;&lt;br /&gt;
uint16_be sector;&lt;br /&gt;
uint32_be data_length;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The cylinder number starts at zero and counts up to the number of cylinders on the disk. The head number follows the same rule (starts at zero, increments for each additional head). The sector number is optional, and only used for hard-sectored discs. For soft-sectored discs, it is set to zero. Data_length indicates the number of bytes of data which follow.&lt;br /&gt;
&lt;br /&gt;
== Decoding data ==&lt;br /&gt;
&lt;br /&gt;
=== Old-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if (byte AND 0x7f) == 0x00:&lt;br /&gt;
    carry = carry + 127&lt;br /&gt;
  else:&lt;br /&gt;
    emit((byte AND 0x7f) + carry)&lt;br /&gt;
    carry = 0&lt;br /&gt;
if carry &amp;gt; 0:&lt;br /&gt;
  emit(carry)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== New-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if ((byte AND 0x7f) == 0x7f):&lt;br /&gt;
    carry = carry + 127&lt;br /&gt;
  else if (byte AND 0x80) != 0:&lt;br /&gt;
    carry = carry + (byte &amp;amp; 0x7F)&lt;br /&gt;
    add_index_position(carry)&lt;br /&gt;
  else:&lt;br /&gt;
    emit((byte AND 0x7f) + carry)&lt;br /&gt;
    carry = 0&lt;br /&gt;
if carry &amp;gt; 0:&lt;br /&gt;
  emit(carry)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=371</id>
		<title>DFI image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DFI_image_format&amp;diff=371"/>
				<updated>2012-01-07T18:20:54Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: Created page with &amp;quot;Category:Disc image files  &amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; DiscFerret software.  == Overall format ==  All integers in this file format are stored in big-endian form.  The DFI file ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; DiscFerret software.&lt;br /&gt;
&lt;br /&gt;
== Overall format ==&lt;br /&gt;
&lt;br /&gt;
All integers in this file format are stored in big-endian form.&lt;br /&gt;
&lt;br /&gt;
The DFI file consists of a 4-byte magic string, followed by a series of disc sample blocks.&lt;br /&gt;
&lt;br /&gt;
The magic string is &amp;quot;DFER&amp;quot; for old-style DiscFerret images, or &amp;quot;DFE2&amp;quot; for new-style DiscFerret images.&lt;br /&gt;
&lt;br /&gt;
Each sample block has a header --&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
uint16_be cylinder;&lt;br /&gt;
uint16_be head;&lt;br /&gt;
uint16_be sector;&lt;br /&gt;
uint32_be data_length;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The cylinder number starts at zero and counts up to the number of cylinders on the disk. The head number follows the same rule (starts at zero, increments for each additional head). The sector number is optional, and only used for hard-sectored discs. For soft-sectored discs, it is set to zero. Data_length indicates the number of bytes of data which follow.&lt;br /&gt;
&lt;br /&gt;
== Decoding data ==&lt;br /&gt;
&lt;br /&gt;
=== Old-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if (byte AND 0x7f) == 0x00:&lt;br /&gt;
    carry = carry + 127&lt;br /&gt;
  else:&lt;br /&gt;
    emit((byte AND 0x7f) + carry)&lt;br /&gt;
    carry = 0&lt;br /&gt;
if carry &amp;gt; 0:&lt;br /&gt;
  emit(carry)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== New-style images ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
carry = 0&lt;br /&gt;
For every byte in the stream:&lt;br /&gt;
  if (byte AND 0x7f) == 0x7f:&lt;br /&gt;
    carry = carry + 127&lt;br /&gt;
  else:&lt;br /&gt;
    emit((byte AND 0x7f) + carry)&lt;br /&gt;
    carry = 0&lt;br /&gt;
if carry &amp;gt; 0:&lt;br /&gt;
  emit(carry)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=370</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=370"/>
				<updated>2011-12-31T21:43:45Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on just about any floppy disc, and some MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS and the Intel MDS M2FM format. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware is licensed under a semi-permissive licence, while the software is released either under the GNU GPL or the Apache Public Licence.&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2011-DEC-31 -- DiscFerret Microcode 0026 and C API v1.3 have been released and are on the [[DiscFerret:Downloads|Downloads]] page. [[User:Philpem|Philpem]] 21:43, 31 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[DiscFerret:Downloads|Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=369</id>
		<title>DiscFerret:Downloads</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=369"/>
				<updated>2011-12-31T21:42:16Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:DiscFerret]]&lt;br /&gt;
&lt;br /&gt;
== Access libraries ==&lt;br /&gt;
&lt;br /&gt;
=== libdiscferret (C library) ===&lt;br /&gt;
&lt;br /&gt;
Libdiscferret allows applications written in C or C++ to access the DiscFerret, without having to worry about USB transaction management, packetisation and other low-level issues. It is known to run on any UNIX platform which provides the [http://www.libusb.org/ libusb-1.0] API. At the time of writing, this includes:&lt;br /&gt;
* Linux&lt;br /&gt;
* FreeBSD 8 (or later)&lt;br /&gt;
* Mac OS X (Darwin)&lt;br /&gt;
&lt;br /&gt;
To build it:&lt;br /&gt;
 tar -zxf libdiscferret-1.3.tar.gz&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
To install it:&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
By default, the libraries and headers are installed in /usr/local/lib and /usr/local/include respectively. To change this, append &amp;quot;PREFIX=path&amp;quot; to both the &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot; commands. For example, to install in &amp;#039;&amp;#039;/opt/discferret&amp;#039;&amp;#039;, use these commands:&lt;br /&gt;
&lt;br /&gt;
 make PREFIX=/opt/discferret&lt;br /&gt;
 make install PREFIX=/opt/discferret&lt;br /&gt;
&lt;br /&gt;
The latest version is &amp;#039;&amp;#039;&amp;#039;Release 1.3&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from here: [http://www.discferret.com/downloads/libdiscferret-1.3.tar.gz libdiscferret-1.3.tar.gz].&lt;br /&gt;
&lt;br /&gt;
==== Change history ====&lt;br /&gt;
&lt;br /&gt;
===== Release 1.3 =====&lt;br /&gt;
* update microcode to REL_0026&lt;br /&gt;
* fix bad syntax in register header (ahem)&lt;br /&gt;
* update registers for microcode 0025 and later&lt;br /&gt;
* fix building of test application&lt;br /&gt;
* update udev rules for newer versions of udev&lt;br /&gt;
* Add udev rules file for DiscFerret devices&lt;br /&gt;
* hide output from rm during solib link&lt;br /&gt;
* fix makefile so libdiscferret also builds on Linux&lt;br /&gt;
* add idplatform.sh (req&amp;#039;d for new build system)&lt;br /&gt;
* Changes to allow libdiscferret to build on Mac OS X&lt;br /&gt;
* More fixes to use stdlib.h instead of malloc.h&lt;br /&gt;
* use stdlib.h instead of malloc.h (ooops!)&lt;br /&gt;
* fix uninitialized value warning&lt;br /&gt;
* tag release builds in the copyright notice, not just debug builds&lt;br /&gt;
* separate building of docs from main library&lt;br /&gt;
* Add missing microcode image (RBF file) and a README&lt;br /&gt;
* BUGFIX: fix issues with accidental double-stepping&lt;br /&gt;
* increase USB timeout to 1 second (from 100ms)&lt;br /&gt;
* fix issue with discferret_microcode.o not being linked into solib&lt;br /&gt;
* fixes for const-correctness, bump version to 1.2r2&lt;br /&gt;
* Include local copy of the DiscFerret microcode&lt;br /&gt;
* use DISCFERRET_ERROR enum where appropriate&lt;br /&gt;
&lt;br /&gt;
===== Release 1.1r1 =====&lt;br /&gt;
&lt;br /&gt;
* Add support for the &amp;quot;Track 0 Reached During Seek&amp;quot; status bit&lt;br /&gt;
* Add discferret_seek_* functions to simplify head seek operations&lt;br /&gt;
&lt;br /&gt;
== Microcode ==&lt;br /&gt;
&lt;br /&gt;
Microcode bundles (RBF files) are included with release versions of the C and Python APIs. Generally speaking, you should only use the microcode version which was included with a given version of the API. To upgrade to a later microcode version, upgrade the API.&lt;br /&gt;
&lt;br /&gt;
For reference, the latest &amp;#039;release&amp;#039; Microcode is &amp;#039;&amp;#039;&amp;#039;version 0026&amp;#039;&amp;#039;&amp;#039;, which is available to download here: [http://www.discferret.com/downloads/microcode_0026.rbf microcode_0026.rbf].&lt;br /&gt;
&lt;br /&gt;
=== Microcode change log ===&lt;br /&gt;
&lt;br /&gt;
==== Rev 0026 (2011-DEC-31) ====&lt;br /&gt;
* fix clock divider logic&lt;br /&gt;
* Move ACQ clocksel bits to separate register, bump version to 0025&lt;br /&gt;
* Fix sync-word detector PJL counter value&lt;br /&gt;
* Data separator rewrite.&lt;br /&gt;
* Refactor data separator to use clock enable instead of divider, redesign sync logic&lt;br /&gt;
* Add clock divider for data acquisition engine&lt;br /&gt;
&lt;br /&gt;
==== Rev 0021 (2011-MAR-21) ====&lt;br /&gt;
&lt;br /&gt;
* Add &amp;quot;track 0 reached during seek&amp;quot; status bit.&lt;br /&gt;
* Improve seek logic to prevent &amp;quot;over-stepping&amp;quot; (seeking to a track below Track 0).&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
The latest firmware package is &amp;#039;&amp;#039;&amp;#039;version 001C&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from [http://www.discferret.com/downloads/discferret_firmware_001c.hex here].&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
&lt;br /&gt;
==== Version 001C (2011-FEB-13) ====&lt;br /&gt;
* Fix a serious bug relating to USB hot-plugging. If the DiscFerret was powered up before the USB cable was connected, then the USB stack may not start up correctly. Additionally, if the USB cable is unplugged while the DiscFerret is powered up, the USB PHY may lose sync with the host.&lt;br /&gt;
&lt;br /&gt;
=== Identifying the firmware version your DiscFerret is running ===&lt;br /&gt;
To identify the current firmware version of your DiscFerret (and its MCU Serial Number), use the &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039; tool from the Firmware Source Code archive:&lt;br /&gt;
&lt;br /&gt;
 ./id_program.py --info&lt;br /&gt;
&lt;br /&gt;
This will display a screen similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Device opened successfully&lt;br /&gt;
Device information:&lt;br /&gt;
	product:        DiscFerret magnetic disc analyser&lt;br /&gt;
	microcode_ver:  0x0020&lt;br /&gt;
	serialnumber:   TARKA&lt;br /&gt;
	firmware_ver:   0x001B&lt;br /&gt;
	microcode_type: 0xDD55&lt;br /&gt;
	hardware_rev:   0I06&lt;br /&gt;
	manufacturer:   Red Fox Engineering&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Microcode Type and Microcode Version will only be valid if a microcode bundle has been uploaded to the DiscFerret (i.e. if an application which uses the DiscFerret has already been run). If the Microcode Type is anything other than `0xDD55`, then the microcode version will not be valid. Device information can only be queried when the DiscFerret is running the operating firmware; the bootloader has no support for firmware version querying.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading the firmware ===&lt;br /&gt;
&lt;br /&gt;
To upgrade the firmware on a DiscFerret, you will need a copy of the &amp;quot;mphidflash&amp;quot; program from [http://code.google.com/p/mphidflash/ http://code.google.com/p/mphidflash/].&lt;br /&gt;
&lt;br /&gt;
The upgrade procedure is as follows:&lt;br /&gt;
&lt;br /&gt;
# Disconnect the USB and power cables from the DiscFerret.&lt;br /&gt;
# Install a jumper cap over the two-pin header marked &amp;quot;BOOT&amp;quot;.&lt;br /&gt;
# Reconnect the USB cable, then the power cable.&lt;br /&gt;
# The amber &amp;quot;MCU Status&amp;quot; LED should now be blinking rapidly.&lt;br /&gt;
# Copy the firmware HEX file and mphidflash into the same directory.&lt;br /&gt;
# From a command prompt, change into the directory containing mphidflash (e.g. `cd mphidflash`).&lt;br /&gt;
# On Linux, run the following command: &amp;lt;pre&amp;gt;./mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# On Windows, run the following command: &amp;lt;pre&amp;gt;mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# Unplug the DiscFerret, remove the BOOT jumper, then reconnect the USB and power cables (in that order). Your DiscFerret should now be running the latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Bootloader ==&lt;br /&gt;
&lt;br /&gt;
If the DiscFerret will not enter the bootloader even with the BOOT jumper installed, the bootloader may have become corrupted. In normal use, this should not be possible. It is, however, still possible to recover the DiscFerret, as long as you have a suitable PIC programmer. To do this, five wires must be soldered to the programming pads on the bottom of the DiscFerret PCB, and a PIC programmer (e.g. a Microchip PICKit 2) is connected to these wires. See the DiscFerret circuit diagram for the pin configuration of these pads.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE: The DiscFerret uses a PIC18F85J50 microcontroller, which uses 3.3V Low Voltage Programming. Make ABSOLUTELY SURE your PIC programmer supports this programming mode (the PICKit 2, PICKit 3 and ICD3 do; the ICD2 &amp;#039;&amp;#039;DOES NOT&amp;#039;&amp;#039;), and that the device is set to &amp;quot;PIC18F85J50&amp;quot; (NOT auto-detect). Failure to follow these instructions WILL destroy the microcontroller IC!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
After reprogramming the bootloader, the Unit Serial Number must be reprogrammed using &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039;, which is included in the Firmware Source-Code Bundle, under the &amp;quot;test&amp;quot; directory. You will need to install the Python LibUSB wrapper library (on an Ubuntu Linux system, this is in the package `python-usb`) in order to use this tool.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DISCLAIMER: Damage caused by incorrectly reflashing the bootloader is NOT covered by the warranty! If you are not confident in your abilities, contact Red Fox Engineering to arrange for your DiscFerret to be re-programmed (a small charge may be made in order to cover postage and packing costs).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bootloader HEX file: [http://www.discferret.com/downloads/discferret_bootloader.hex Bootloader Release 1.0 Final].&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=368</id>
		<title>DiscFerret:Downloads</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=368"/>
				<updated>2011-12-31T21:41:19Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* Microcode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:DiscFerret]]&lt;br /&gt;
&lt;br /&gt;
== Access libraries ==&lt;br /&gt;
&lt;br /&gt;
=== libdiscferret (C library) ===&lt;br /&gt;
&lt;br /&gt;
Libdiscferret allows applications written in C or C++ to access the DiscFerret, without having to worry about USB transaction management, packetisation and other low-level issues. It is known to run on any UNIX platform which provides the [http://www.libusb.org/ libusb-1.0] API. At the time of writing, this includes:&lt;br /&gt;
* Linux&lt;br /&gt;
* FreeBSD 8 (or later)&lt;br /&gt;
* Mac OS X (Darwin)&lt;br /&gt;
&lt;br /&gt;
To build it:&lt;br /&gt;
 tar -zxf libdiscferret-1.3.tar.gz&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
To install it:&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
By default, the libraries and headers are installed in /usr/local/lib and /usr/local/include respectively. To change this, append &amp;quot;PREFIX=path&amp;quot; to both the &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot; commands. For example, to install in &amp;#039;&amp;#039;/opt/discferret&amp;#039;&amp;#039;, use these commands:&lt;br /&gt;
&lt;br /&gt;
 make PREFIX=/opt/discferret&lt;br /&gt;
 make install PREFIX=/opt/discferret&lt;br /&gt;
&lt;br /&gt;
The latest version is &amp;#039;&amp;#039;&amp;#039;Release 1.3&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from here: [http://www.discferret.com/downloads/libdiscferret-1.3.tar.gz libdiscferret-1.3.tar.gz].&lt;br /&gt;
&lt;br /&gt;
==== Change history ====&lt;br /&gt;
&lt;br /&gt;
===== Release 1.3 =====&lt;br /&gt;
* update microcode to REL_0026&lt;br /&gt;
* fix bad syntax in register header (ahem)&lt;br /&gt;
* update registers for microcode 0025 and later&lt;br /&gt;
* fix building of test application&lt;br /&gt;
* update udev rules for newer versions of udev&lt;br /&gt;
* Add udev rules file for DiscFerret devices&lt;br /&gt;
* hide output from rm during solib link&lt;br /&gt;
* fix makefile so libdiscferret also builds on Linux&lt;br /&gt;
* add idplatform.sh (req&amp;#039;d for new build system)&lt;br /&gt;
* Changes to allow libdiscferret to build on Mac OS X&lt;br /&gt;
* More fixes to use stdlib.h instead of malloc.h&lt;br /&gt;
* use stdlib.h instead of malloc.h (ooops!)&lt;br /&gt;
* fix uninitialized value warning&lt;br /&gt;
* tag release builds in the copyright notice, not just debug builds&lt;br /&gt;
* separate building of docs from main library&lt;br /&gt;
* Add missing microcode image (RBF file) and a README&lt;br /&gt;
* BUGFIX: fix issues with accidental double-stepping&lt;br /&gt;
* increase USB timeout to 1 second (from 100ms)&lt;br /&gt;
* fix issue with discferret_microcode.o not being linked into solib&lt;br /&gt;
* fixes for const-correctness, bump version to 1.2r2&lt;br /&gt;
* Include local copy of the DiscFerret microcode&lt;br /&gt;
* use DISCFERRET_ERROR enum where appropriate&lt;br /&gt;
&lt;br /&gt;
===== Release 1.1r1 =====&lt;br /&gt;
&lt;br /&gt;
* Add support for the &amp;quot;Track 0 Reached During Seek&amp;quot; status bit&lt;br /&gt;
* Add discferret_seek_* functions to simplify head seek operations&lt;br /&gt;
&lt;br /&gt;
== Microcode ==&lt;br /&gt;
&lt;br /&gt;
Microcode bundles (RBF files) are included with release versions of the C and Python APIs. Generally speaking, you should only use the microcode version which was included with a given version of the API. To upgrade to a later microcode version, upgrade the API.&lt;br /&gt;
&lt;br /&gt;
For reference, the latest &amp;#039;release&amp;#039; Microcode is &amp;#039;&amp;#039;&amp;#039;version 0026&amp;#039;&amp;#039;&amp;#039;, which is available to download here: [http://www.discferret.com/downloads/microcode_0026.rbf microcode_0026.rbf].&lt;br /&gt;
&lt;br /&gt;
=== Microcode change log ===&lt;br /&gt;
&lt;br /&gt;
==== Rev 0026 (2011-DEC-31) ====&lt;br /&gt;
* fix clock divider logic&lt;br /&gt;
* Move ACQ clocksel bits to separate register, bump version to 0025&lt;br /&gt;
* Fix sync-word detector PJL counter value&lt;br /&gt;
* Data separator rewrite.&lt;br /&gt;
* Refactor data separator to use clock enable instead of divider, redesign sync logic&lt;br /&gt;
* Add clock divider for data acquisition engine&lt;br /&gt;
&lt;br /&gt;
==== Rev 0021 (2011-MAR-21) ====&lt;br /&gt;
&lt;br /&gt;
* Add &amp;quot;track 0 reached during seek&amp;quot; status bit.&lt;br /&gt;
* Improve seek logic to prevent &amp;quot;over-stepping&amp;quot; (seeking to a track below Track 0).&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
The latest firmware package is &amp;#039;&amp;#039;&amp;#039;version 001C&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from [http://www.discferret.com/downloads/discferret_firmware_001c.hex here].&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
&lt;br /&gt;
==== Version 001C (2011-FEB-13) ====&lt;br /&gt;
* Fix a serious bug relating to USB hot-plugging. If the DiscFerret was powered up before the USB cable was connected, then the USB stack may not start up correctly. Additionally, if the USB cable is unplugged while the DiscFerret is powered up, the USB PHY may lose sync with the host.&lt;br /&gt;
&lt;br /&gt;
=== Identifying the firmware version your DiscFerret is running ===&lt;br /&gt;
To identify the current firmware version of your DiscFerret (and its MCU Serial Number), use the &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039; tool from the Firmware Source Code archive:&lt;br /&gt;
&lt;br /&gt;
 ./id_program.py --info&lt;br /&gt;
&lt;br /&gt;
This will display a screen similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Device opened successfully&lt;br /&gt;
Device information:&lt;br /&gt;
	product:        DiscFerret magnetic disc analyser&lt;br /&gt;
	microcode_ver:  0x0020&lt;br /&gt;
	serialnumber:   TARKA&lt;br /&gt;
	firmware_ver:   0x001B&lt;br /&gt;
	microcode_type: 0xDD55&lt;br /&gt;
	hardware_rev:   0I06&lt;br /&gt;
	manufacturer:   Red Fox Engineering&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Microcode Type and Microcode Version will only be valid if a microcode bundle has been uploaded to the DiscFerret (i.e. if an application which uses the DiscFerret has already been run). If the Microcode Type is anything other than `0xDD55`, then the microcode version will not be valid. Device information can only be queried when the DiscFerret is running the operating firmware; the bootloader has no support for firmware version querying.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading the firmware ===&lt;br /&gt;
&lt;br /&gt;
To upgrade the firmware on a DiscFerret, you will need a copy of the &amp;quot;mphidflash&amp;quot; program from [http://code.google.com/p/mphidflash/ http://code.google.com/p/mphidflash/].&lt;br /&gt;
&lt;br /&gt;
The upgrade procedure is as follows:&lt;br /&gt;
&lt;br /&gt;
# Disconnect the USB and power cables from the DiscFerret.&lt;br /&gt;
# Install a jumper cap over the two-pin header marked &amp;quot;BOOT&amp;quot;.&lt;br /&gt;
# Reconnect the USB cable, then the power cable.&lt;br /&gt;
# The amber &amp;quot;MCU Status&amp;quot; LED should now be blinking rapidly.&lt;br /&gt;
# Copy the firmware HEX file and mphidflash into the same directory.&lt;br /&gt;
# From a command prompt, change into the directory containing mphidflash (e.g. `cd mphidflash`).&lt;br /&gt;
# On Linux, run the following command: &amp;lt;pre&amp;gt;./mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# On Windows, run the following command: &amp;lt;pre&amp;gt;mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# Unplug the DiscFerret, remove the BOOT jumper, then reconnect the USB and power cables (in that order). Your DiscFerret should now be running the latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Bootloader ==&lt;br /&gt;
&lt;br /&gt;
If the DiscFerret will not enter the bootloader even with the BOOT jumper installed, the bootloader may have become corrupted. In normal use, this should not be possible. It is, however, still possible to recover the DiscFerret, as long as you have a suitable PIC programmer. To do this, five wires must be soldered to the programming pads on the bottom of the DiscFerret PCB, and a PIC programmer (e.g. a Microchip PICKit 2) is connected to these wires. See the DiscFerret circuit diagram for the pin configuration of these pads.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE: The DiscFerret uses a PIC18F85J50 microcontroller, which uses 3.3V Low Voltage Programming. Make ABSOLUTELY SURE your PIC programmer supports this programming mode (the PICKit 2 and PICKit 3 do), and that the device is set to &amp;quot;PIC18F85J50&amp;quot; (NOT auto-detect). Failure to follow these instructions WILL destroy the microcontroller IC!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
After reprogramming the bootloader, the Unit Serial Number must be reprogrammed using &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039;, which is included in the Firmware Source-Code Bundle, under the &amp;quot;test&amp;quot; directory. You will need to install the Python LibUSB wrapper library (on an Ubuntu Linux system, this is in the package `python-usb`) in order to use this tool.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DISCLAIMER: Damage caused by incorrectly reflashing the bootloader is NOT covered by the warranty! If you are not confident in your abilities, contact Red Fox Engineering to arrange for your DiscFerret to be re-programmed (a small charge may be made in order to cover postage and packing costs).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bootloader HEX file: [http://www.discferret.com/downloads/discferret_bootloader.hex Bootloader Release 1.0 Final].&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=367</id>
		<title>DiscFerret:Downloads</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=367"/>
				<updated>2011-12-31T21:39:32Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* Release 1.3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:DiscFerret]]&lt;br /&gt;
&lt;br /&gt;
== Access libraries ==&lt;br /&gt;
&lt;br /&gt;
=== libdiscferret (C library) ===&lt;br /&gt;
&lt;br /&gt;
Libdiscferret allows applications written in C or C++ to access the DiscFerret, without having to worry about USB transaction management, packetisation and other low-level issues. It is known to run on any UNIX platform which provides the [http://www.libusb.org/ libusb-1.0] API. At the time of writing, this includes:&lt;br /&gt;
* Linux&lt;br /&gt;
* FreeBSD 8 (or later)&lt;br /&gt;
* Mac OS X (Darwin)&lt;br /&gt;
&lt;br /&gt;
To build it:&lt;br /&gt;
 tar -zxf libdiscferret-1.3.tar.gz&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
To install it:&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
By default, the libraries and headers are installed in /usr/local/lib and /usr/local/include respectively. To change this, append &amp;quot;PREFIX=path&amp;quot; to both the &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot; commands. For example, to install in &amp;#039;&amp;#039;/opt/discferret&amp;#039;&amp;#039;, use these commands:&lt;br /&gt;
&lt;br /&gt;
 make PREFIX=/opt/discferret&lt;br /&gt;
 make install PREFIX=/opt/discferret&lt;br /&gt;
&lt;br /&gt;
The latest version is &amp;#039;&amp;#039;&amp;#039;Release 1.3&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from here: [http://www.discferret.com/downloads/libdiscferret-1.3.tar.gz libdiscferret-1.3.tar.gz].&lt;br /&gt;
&lt;br /&gt;
==== Change history ====&lt;br /&gt;
&lt;br /&gt;
===== Release 1.3 =====&lt;br /&gt;
* update microcode to REL_0026&lt;br /&gt;
* fix bad syntax in register header (ahem)&lt;br /&gt;
* update registers for microcode 0025 and later&lt;br /&gt;
* fix building of test application&lt;br /&gt;
* update udev rules for newer versions of udev&lt;br /&gt;
* Add udev rules file for DiscFerret devices&lt;br /&gt;
* hide output from rm during solib link&lt;br /&gt;
* fix makefile so libdiscferret also builds on Linux&lt;br /&gt;
* add idplatform.sh (req&amp;#039;d for new build system)&lt;br /&gt;
* Changes to allow libdiscferret to build on Mac OS X&lt;br /&gt;
* More fixes to use stdlib.h instead of malloc.h&lt;br /&gt;
* use stdlib.h instead of malloc.h (ooops!)&lt;br /&gt;
* fix uninitialized value warning&lt;br /&gt;
* tag release builds in the copyright notice, not just debug builds&lt;br /&gt;
* separate building of docs from main library&lt;br /&gt;
* Add missing microcode image (RBF file) and a README&lt;br /&gt;
* BUGFIX: fix issues with accidental double-stepping&lt;br /&gt;
* increase USB timeout to 1 second (from 100ms)&lt;br /&gt;
* fix issue with discferret_microcode.o not being linked into solib&lt;br /&gt;
* fixes for const-correctness, bump version to 1.2r2&lt;br /&gt;
* Include local copy of the DiscFerret microcode&lt;br /&gt;
* use DISCFERRET_ERROR enum where appropriate&lt;br /&gt;
&lt;br /&gt;
===== Release 1.1r1 =====&lt;br /&gt;
&lt;br /&gt;
* Add support for the &amp;quot;Track 0 Reached During Seek&amp;quot; status bit&lt;br /&gt;
* Add discferret_seek_* functions to simplify head seek operations&lt;br /&gt;
&lt;br /&gt;
== Microcode ==&lt;br /&gt;
&lt;br /&gt;
Microcode bundles (RBF files) are included with release versions of the C and Python APIs. Generally speaking, you should only use the microcode version which was included with a given version of the API. To upgrade to a later microcode version, upgrade the API.&lt;br /&gt;
&lt;br /&gt;
For reference, the latest &amp;#039;release&amp;#039; Microcode is &amp;#039;&amp;#039;&amp;#039;version 0021&amp;#039;&amp;#039;&amp;#039;, which is available to download here: [http://www.discferret.com/downloads/microcode_0021.rbf microcode_0021.rbf]. &lt;br /&gt;
&lt;br /&gt;
=== Microcode change log ===&lt;br /&gt;
&lt;br /&gt;
==== Rev 0021 (2011-MAR-21) ====&lt;br /&gt;
&lt;br /&gt;
* Add &amp;quot;track 0 reached during seek&amp;quot; status bit.&lt;br /&gt;
* Improve seek logic to prevent &amp;quot;over-stepping&amp;quot; (seeking to a track below Track 0).&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
The latest firmware package is &amp;#039;&amp;#039;&amp;#039;version 001C&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from [http://www.discferret.com/downloads/discferret_firmware_001c.hex here].&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
&lt;br /&gt;
==== Version 001C (2011-FEB-13) ====&lt;br /&gt;
* Fix a serious bug relating to USB hot-plugging. If the DiscFerret was powered up before the USB cable was connected, then the USB stack may not start up correctly. Additionally, if the USB cable is unplugged while the DiscFerret is powered up, the USB PHY may lose sync with the host.&lt;br /&gt;
&lt;br /&gt;
=== Identifying the firmware version your DiscFerret is running ===&lt;br /&gt;
To identify the current firmware version of your DiscFerret (and its MCU Serial Number), use the &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039; tool from the Firmware Source Code archive:&lt;br /&gt;
&lt;br /&gt;
 ./id_program.py --info&lt;br /&gt;
&lt;br /&gt;
This will display a screen similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Device opened successfully&lt;br /&gt;
Device information:&lt;br /&gt;
	product:        DiscFerret magnetic disc analyser&lt;br /&gt;
	microcode_ver:  0x0020&lt;br /&gt;
	serialnumber:   TARKA&lt;br /&gt;
	firmware_ver:   0x001B&lt;br /&gt;
	microcode_type: 0xDD55&lt;br /&gt;
	hardware_rev:   0I06&lt;br /&gt;
	manufacturer:   Red Fox Engineering&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Microcode Type and Microcode Version will only be valid if a microcode bundle has been uploaded to the DiscFerret (i.e. if an application which uses the DiscFerret has already been run). If the Microcode Type is anything other than `0xDD55`, then the microcode version will not be valid. Device information can only be queried when the DiscFerret is running the operating firmware; the bootloader has no support for firmware version querying.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading the firmware ===&lt;br /&gt;
&lt;br /&gt;
To upgrade the firmware on a DiscFerret, you will need a copy of the &amp;quot;mphidflash&amp;quot; program from [http://code.google.com/p/mphidflash/ http://code.google.com/p/mphidflash/].&lt;br /&gt;
&lt;br /&gt;
The upgrade procedure is as follows:&lt;br /&gt;
&lt;br /&gt;
# Disconnect the USB and power cables from the DiscFerret.&lt;br /&gt;
# Install a jumper cap over the two-pin header marked &amp;quot;BOOT&amp;quot;.&lt;br /&gt;
# Reconnect the USB cable, then the power cable.&lt;br /&gt;
# The amber &amp;quot;MCU Status&amp;quot; LED should now be blinking rapidly.&lt;br /&gt;
# Copy the firmware HEX file and mphidflash into the same directory.&lt;br /&gt;
# From a command prompt, change into the directory containing mphidflash (e.g. `cd mphidflash`).&lt;br /&gt;
# On Linux, run the following command: &amp;lt;pre&amp;gt;./mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# On Windows, run the following command: &amp;lt;pre&amp;gt;mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# Unplug the DiscFerret, remove the BOOT jumper, then reconnect the USB and power cables (in that order). Your DiscFerret should now be running the latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Bootloader ==&lt;br /&gt;
&lt;br /&gt;
If the DiscFerret will not enter the bootloader even with the BOOT jumper installed, the bootloader may have become corrupted. In normal use, this should not be possible. It is, however, still possible to recover the DiscFerret, as long as you have a suitable PIC programmer. To do this, five wires must be soldered to the programming pads on the bottom of the DiscFerret PCB, and a PIC programmer (e.g. a Microchip PICKit 2) is connected to these wires. See the DiscFerret circuit diagram for the pin configuration of these pads.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE: The DiscFerret uses a PIC18F85J50 microcontroller, which uses 3.3V Low Voltage Programming. Make ABSOLUTELY SURE your PIC programmer supports this programming mode (the PICKit 2 and PICKit 3 do), and that the device is set to &amp;quot;PIC18F85J50&amp;quot; (NOT auto-detect). Failure to follow these instructions WILL destroy the microcontroller IC!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
After reprogramming the bootloader, the Unit Serial Number must be reprogrammed using &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039;, which is included in the Firmware Source-Code Bundle, under the &amp;quot;test&amp;quot; directory. You will need to install the Python LibUSB wrapper library (on an Ubuntu Linux system, this is in the package `python-usb`) in order to use this tool.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DISCLAIMER: Damage caused by incorrectly reflashing the bootloader is NOT covered by the warranty! If you are not confident in your abilities, contact Red Fox Engineering to arrange for your DiscFerret to be re-programmed (a small charge may be made in order to cover postage and packing costs).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bootloader HEX file: [http://www.discferret.com/downloads/discferret_bootloader.hex Bootloader Release 1.0 Final].&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=366</id>
		<title>DiscFerret:Downloads</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=366"/>
				<updated>2011-12-31T21:38:52Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* Access libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:DiscFerret]]&lt;br /&gt;
&lt;br /&gt;
== Access libraries ==&lt;br /&gt;
&lt;br /&gt;
=== libdiscferret (C library) ===&lt;br /&gt;
&lt;br /&gt;
Libdiscferret allows applications written in C or C++ to access the DiscFerret, without having to worry about USB transaction management, packetisation and other low-level issues. It is known to run on any UNIX platform which provides the [http://www.libusb.org/ libusb-1.0] API. At the time of writing, this includes:&lt;br /&gt;
* Linux&lt;br /&gt;
* FreeBSD 8 (or later)&lt;br /&gt;
* Mac OS X (Darwin)&lt;br /&gt;
&lt;br /&gt;
To build it:&lt;br /&gt;
 tar -zxf libdiscferret-1.3.tar.gz&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
To install it:&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
By default, the libraries and headers are installed in /usr/local/lib and /usr/local/include respectively. To change this, append &amp;quot;PREFIX=path&amp;quot; to both the &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot; commands. For example, to install in &amp;#039;&amp;#039;/opt/discferret&amp;#039;&amp;#039;, use these commands:&lt;br /&gt;
&lt;br /&gt;
 make PREFIX=/opt/discferret&lt;br /&gt;
 make install PREFIX=/opt/discferret&lt;br /&gt;
&lt;br /&gt;
The latest version is &amp;#039;&amp;#039;&amp;#039;Release 1.3&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from here: [http://www.discferret.com/downloads/libdiscferret-1.3.tar.gz libdiscferret-1.3.tar.gz].&lt;br /&gt;
&lt;br /&gt;
==== Change history ====&lt;br /&gt;
&lt;br /&gt;
===== Release 1.3 =====&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
update microcode to REL_0026&lt;br /&gt;
fix bad syntax in register header (ahem)&lt;br /&gt;
update registers for microcode 0025 and later&lt;br /&gt;
fix building of test application&lt;br /&gt;
update udev rules for newer versions of udev&lt;br /&gt;
Add udev rules file for DiscFerret devices&lt;br /&gt;
hide output from rm during solib link&lt;br /&gt;
fix makefile so libdiscferret also builds on Linux&lt;br /&gt;
add idplatform.sh (req&amp;#039;d for new build system)&lt;br /&gt;
Changes to allow libdiscferret to build on Mac OS X&lt;br /&gt;
More fixes to use stdlib.h instead of malloc.h&lt;br /&gt;
use stdlib.h instead of malloc.h (ooops!)&lt;br /&gt;
fix uninitialized value warning&lt;br /&gt;
tag release builds in the copyright notice, not just debug builds&lt;br /&gt;
separate building of docs from main library&lt;br /&gt;
Add missing microcode image (RBF file) and a README&lt;br /&gt;
BUGFIX: fix issues with accidental double-stepping&lt;br /&gt;
increase USB timeout to 1 second (from 100ms)&lt;br /&gt;
fix issue with discferret_microcode.o not being linked into solib&lt;br /&gt;
fixes for const-correctness, bump version to 1.2r2&lt;br /&gt;
Include local copy of the DiscFerret microcode&lt;br /&gt;
use DISCFERRET_ERROR enum where appropriate&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Release 1.1r1 =====&lt;br /&gt;
&lt;br /&gt;
* Add support for the &amp;quot;Track 0 Reached During Seek&amp;quot; status bit&lt;br /&gt;
* Add discferret_seek_* functions to simplify head seek operations&lt;br /&gt;
&lt;br /&gt;
== Microcode ==&lt;br /&gt;
&lt;br /&gt;
Microcode bundles (RBF files) are included with release versions of the C and Python APIs. Generally speaking, you should only use the microcode version which was included with a given version of the API. To upgrade to a later microcode version, upgrade the API.&lt;br /&gt;
&lt;br /&gt;
For reference, the latest &amp;#039;release&amp;#039; Microcode is &amp;#039;&amp;#039;&amp;#039;version 0021&amp;#039;&amp;#039;&amp;#039;, which is available to download here: [http://www.discferret.com/downloads/microcode_0021.rbf microcode_0021.rbf]. &lt;br /&gt;
&lt;br /&gt;
=== Microcode change log ===&lt;br /&gt;
&lt;br /&gt;
==== Rev 0021 (2011-MAR-21) ====&lt;br /&gt;
&lt;br /&gt;
* Add &amp;quot;track 0 reached during seek&amp;quot; status bit.&lt;br /&gt;
* Improve seek logic to prevent &amp;quot;over-stepping&amp;quot; (seeking to a track below Track 0).&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
The latest firmware package is &amp;#039;&amp;#039;&amp;#039;version 001C&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from [http://www.discferret.com/downloads/discferret_firmware_001c.hex here].&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
&lt;br /&gt;
==== Version 001C (2011-FEB-13) ====&lt;br /&gt;
* Fix a serious bug relating to USB hot-plugging. If the DiscFerret was powered up before the USB cable was connected, then the USB stack may not start up correctly. Additionally, if the USB cable is unplugged while the DiscFerret is powered up, the USB PHY may lose sync with the host.&lt;br /&gt;
&lt;br /&gt;
=== Identifying the firmware version your DiscFerret is running ===&lt;br /&gt;
To identify the current firmware version of your DiscFerret (and its MCU Serial Number), use the &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039; tool from the Firmware Source Code archive:&lt;br /&gt;
&lt;br /&gt;
 ./id_program.py --info&lt;br /&gt;
&lt;br /&gt;
This will display a screen similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Device opened successfully&lt;br /&gt;
Device information:&lt;br /&gt;
	product:        DiscFerret magnetic disc analyser&lt;br /&gt;
	microcode_ver:  0x0020&lt;br /&gt;
	serialnumber:   TARKA&lt;br /&gt;
	firmware_ver:   0x001B&lt;br /&gt;
	microcode_type: 0xDD55&lt;br /&gt;
	hardware_rev:   0I06&lt;br /&gt;
	manufacturer:   Red Fox Engineering&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Microcode Type and Microcode Version will only be valid if a microcode bundle has been uploaded to the DiscFerret (i.e. if an application which uses the DiscFerret has already been run). If the Microcode Type is anything other than `0xDD55`, then the microcode version will not be valid. Device information can only be queried when the DiscFerret is running the operating firmware; the bootloader has no support for firmware version querying.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading the firmware ===&lt;br /&gt;
&lt;br /&gt;
To upgrade the firmware on a DiscFerret, you will need a copy of the &amp;quot;mphidflash&amp;quot; program from [http://code.google.com/p/mphidflash/ http://code.google.com/p/mphidflash/].&lt;br /&gt;
&lt;br /&gt;
The upgrade procedure is as follows:&lt;br /&gt;
&lt;br /&gt;
# Disconnect the USB and power cables from the DiscFerret.&lt;br /&gt;
# Install a jumper cap over the two-pin header marked &amp;quot;BOOT&amp;quot;.&lt;br /&gt;
# Reconnect the USB cable, then the power cable.&lt;br /&gt;
# The amber &amp;quot;MCU Status&amp;quot; LED should now be blinking rapidly.&lt;br /&gt;
# Copy the firmware HEX file and mphidflash into the same directory.&lt;br /&gt;
# From a command prompt, change into the directory containing mphidflash (e.g. `cd mphidflash`).&lt;br /&gt;
# On Linux, run the following command: &amp;lt;pre&amp;gt;./mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# On Windows, run the following command: &amp;lt;pre&amp;gt;mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# Unplug the DiscFerret, remove the BOOT jumper, then reconnect the USB and power cables (in that order). Your DiscFerret should now be running the latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Bootloader ==&lt;br /&gt;
&lt;br /&gt;
If the DiscFerret will not enter the bootloader even with the BOOT jumper installed, the bootloader may have become corrupted. In normal use, this should not be possible. It is, however, still possible to recover the DiscFerret, as long as you have a suitable PIC programmer. To do this, five wires must be soldered to the programming pads on the bottom of the DiscFerret PCB, and a PIC programmer (e.g. a Microchip PICKit 2) is connected to these wires. See the DiscFerret circuit diagram for the pin configuration of these pads.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE: The DiscFerret uses a PIC18F85J50 microcontroller, which uses 3.3V Low Voltage Programming. Make ABSOLUTELY SURE your PIC programmer supports this programming mode (the PICKit 2 and PICKit 3 do), and that the device is set to &amp;quot;PIC18F85J50&amp;quot; (NOT auto-detect). Failure to follow these instructions WILL destroy the microcontroller IC!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
After reprogramming the bootloader, the Unit Serial Number must be reprogrammed using &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039;, which is included in the Firmware Source-Code Bundle, under the &amp;quot;test&amp;quot; directory. You will need to install the Python LibUSB wrapper library (on an Ubuntu Linux system, this is in the package `python-usb`) in order to use this tool.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DISCLAIMER: Damage caused by incorrectly reflashing the bootloader is NOT covered by the warranty! If you are not confident in your abilities, contact Red Fox Engineering to arrange for your DiscFerret to be re-programmed (a small charge may be made in order to cover postage and packing costs).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bootloader HEX file: [http://www.discferret.com/downloads/discferret_bootloader.hex Bootloader Release 1.0 Final].&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=Main_Page&amp;diff=364</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=Main_Page&amp;diff=364"/>
				<updated>2011-12-23T03:04:56Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: Unprotected &amp;quot;Main Page&amp;quot;: user account creation has been disabled and only developers have access. no need to protect individual pages.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DiscFerret]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=363</id>
		<title>DiscFerret:Downloads</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret:Downloads&amp;diff=363"/>
				<updated>2011-12-23T03:04:36Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: Unprotected &amp;quot;DiscFerret:Downloads&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:DiscFerret]]&lt;br /&gt;
&lt;br /&gt;
== Access libraries ==&lt;br /&gt;
&lt;br /&gt;
=== libdiscferret (C library) ===&lt;br /&gt;
&lt;br /&gt;
Libdiscferret allows applications written in C or C++ to access the DiscFerret, without having to worry about USB transaction management, packetisation and other low-level issues. It is known to run on any UNIX platform which provides the [http://www.libusb.org/ libusb-1.0] API. At the time of writing, this includes:&lt;br /&gt;
* Linux&lt;br /&gt;
* FreeBSD 8 (or later)&lt;br /&gt;
* Mac OS X (Darwin)&lt;br /&gt;
&lt;br /&gt;
To build it:&lt;br /&gt;
 tar -zxf libdiscferret-1.1r1.tar.gz&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
To install it:&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
By default, the libraries and headers are installed in /usr/local/lib and /usr/local/include respectively. To change this, append &amp;quot;PREFIX=path&amp;quot; to both the &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot; commands. For example, to install in &amp;#039;&amp;#039;/opt/discferret&amp;#039;&amp;#039;, use these commands:&lt;br /&gt;
&lt;br /&gt;
 make PREFIX=/opt/discferret&lt;br /&gt;
 make install PREFIX=/opt/discferret&lt;br /&gt;
&lt;br /&gt;
The latest version is &amp;#039;&amp;#039;&amp;#039;Release 1.1r1&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from here: [http://www.discferret.com/downloads/libdiscferret-1.1r1.tar.gz libdiscferret-1.1r1.tar.gz].&lt;br /&gt;
&lt;br /&gt;
==== Change history ====&lt;br /&gt;
&lt;br /&gt;
===== Release 1.1r1 =====&lt;br /&gt;
&lt;br /&gt;
* Add support for the &amp;quot;Track 0 Reached During Seek&amp;quot; status bit&lt;br /&gt;
* Add discferret_seek_* functions to simplify head seek operations&lt;br /&gt;
&lt;br /&gt;
== Microcode ==&lt;br /&gt;
&lt;br /&gt;
Microcode bundles (RBF files) are included with release versions of the C and Python APIs. Generally speaking, you should only use the microcode version which was included with a given version of the API. To upgrade to a later microcode version, upgrade the API.&lt;br /&gt;
&lt;br /&gt;
For reference, the latest &amp;#039;release&amp;#039; Microcode is &amp;#039;&amp;#039;&amp;#039;version 0021&amp;#039;&amp;#039;&amp;#039;, which is available to download here: [http://www.discferret.com/downloads/microcode_0021.rbf microcode_0021.rbf]. &lt;br /&gt;
&lt;br /&gt;
=== Microcode change log ===&lt;br /&gt;
&lt;br /&gt;
==== Rev 0021 (2011-MAR-21) ====&lt;br /&gt;
&lt;br /&gt;
* Add &amp;quot;track 0 reached during seek&amp;quot; status bit.&lt;br /&gt;
* Improve seek logic to prevent &amp;quot;over-stepping&amp;quot; (seeking to a track below Track 0).&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
The latest firmware package is &amp;#039;&amp;#039;&amp;#039;version 001C&amp;#039;&amp;#039;&amp;#039;, which can be downloaded from [http://www.discferret.com/downloads/discferret_firmware_001c.hex here].&lt;br /&gt;
&lt;br /&gt;
=== Change history ===&lt;br /&gt;
&lt;br /&gt;
==== Version 001C (2011-FEB-13) ====&lt;br /&gt;
* Fix a serious bug relating to USB hot-plugging. If the DiscFerret was powered up before the USB cable was connected, then the USB stack may not start up correctly. Additionally, if the USB cable is unplugged while the DiscFerret is powered up, the USB PHY may lose sync with the host.&lt;br /&gt;
&lt;br /&gt;
=== Identifying the firmware version your DiscFerret is running ===&lt;br /&gt;
To identify the current firmware version of your DiscFerret (and its MCU Serial Number), use the &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039; tool from the Firmware Source Code archive:&lt;br /&gt;
&lt;br /&gt;
 ./id_program.py --info&lt;br /&gt;
&lt;br /&gt;
This will display a screen similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Device opened successfully&lt;br /&gt;
Device information:&lt;br /&gt;
	product:        DiscFerret magnetic disc analyser&lt;br /&gt;
	microcode_ver:  0x0020&lt;br /&gt;
	serialnumber:   TARKA&lt;br /&gt;
	firmware_ver:   0x001B&lt;br /&gt;
	microcode_type: 0xDD55&lt;br /&gt;
	hardware_rev:   0I06&lt;br /&gt;
	manufacturer:   Red Fox Engineering&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Microcode Type and Microcode Version will only be valid if a microcode bundle has been uploaded to the DiscFerret (i.e. if an application which uses the DiscFerret has already been run). If the Microcode Type is anything other than `0xDD55`, then the microcode version will not be valid. Device information can only be queried when the DiscFerret is running the operating firmware; the bootloader has no support for firmware version querying.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading the firmware ===&lt;br /&gt;
&lt;br /&gt;
To upgrade the firmware on a DiscFerret, you will need a copy of the &amp;quot;mphidflash&amp;quot; program from [http://code.google.com/p/mphidflash/ http://code.google.com/p/mphidflash/].&lt;br /&gt;
&lt;br /&gt;
The upgrade procedure is as follows:&lt;br /&gt;
&lt;br /&gt;
# Disconnect the USB and power cables from the DiscFerret.&lt;br /&gt;
# Install a jumper cap over the two-pin header marked &amp;quot;BOOT&amp;quot;.&lt;br /&gt;
# Reconnect the USB cable, then the power cable.&lt;br /&gt;
# The amber &amp;quot;MCU Status&amp;quot; LED should now be blinking rapidly.&lt;br /&gt;
# Copy the firmware HEX file and mphidflash into the same directory.&lt;br /&gt;
# From a command prompt, change into the directory containing mphidflash (e.g. `cd mphidflash`).&lt;br /&gt;
# On Linux, run the following command: &amp;lt;pre&amp;gt;./mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# On Windows, run the following command: &amp;lt;pre&amp;gt;mphidflash -r -n -v 04d8 -p fbba -w discferret_firmware_XXXX.hex&amp;lt;/pre&amp;gt; (replace XXXX with the firmware version number).&lt;br /&gt;
# Unplug the DiscFerret, remove the BOOT jumper, then reconnect the USB and power cables (in that order). Your DiscFerret should now be running the latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Bootloader ==&lt;br /&gt;
&lt;br /&gt;
If the DiscFerret will not enter the bootloader even with the BOOT jumper installed, the bootloader may have become corrupted. In normal use, this should not be possible. It is, however, still possible to recover the DiscFerret, as long as you have a suitable PIC programmer. To do this, five wires must be soldered to the programming pads on the bottom of the DiscFerret PCB, and a PIC programmer (e.g. a Microchip PICKit 2) is connected to these wires. See the DiscFerret circuit diagram for the pin configuration of these pads.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE: The DiscFerret uses a PIC18F85J50 microcontroller, which uses 3.3V Low Voltage Programming. Make ABSOLUTELY SURE your PIC programmer supports this programming mode (the PICKit 2 and PICKit 3 do), and that the device is set to &amp;quot;PIC18F85J50&amp;quot; (NOT auto-detect). Failure to follow these instructions WILL destroy the microcontroller IC!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
After reprogramming the bootloader, the Unit Serial Number must be reprogrammed using &amp;#039;&amp;#039;&amp;#039;id_program.py&amp;#039;&amp;#039;&amp;#039;, which is included in the Firmware Source-Code Bundle, under the &amp;quot;test&amp;quot; directory. You will need to install the Python LibUSB wrapper library (on an Ubuntu Linux system, this is in the package `python-usb`) in order to use this tool.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DISCLAIMER: Damage caused by incorrectly reflashing the bootloader is NOT covered by the warranty! If you are not confident in your abilities, contact Red Fox Engineering to arrange for your DiscFerret to be re-programmed (a small charge may be made in order to cover postage and packing costs).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bootloader HEX file: [http://www.discferret.com/downloads/discferret_bootloader.hex Bootloader Release 1.0 Final].&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret:FAQ&amp;diff=362</id>
		<title>DiscFerret:FAQ</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret:FAQ&amp;diff=362"/>
				<updated>2011-12-23T03:03:35Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: Unprotected &amp;quot;DiscFerret:FAQ&amp;quot;: user account creation has been disabled and only developers have access. no need to protect individual pages.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:DiscFerret]]&lt;br /&gt;
&lt;br /&gt;
== DiscFerret-specific questions ==&lt;br /&gt;
&lt;br /&gt;
=== Why another disc analyser? ===&lt;br /&gt;
&lt;br /&gt;
Because the other analysers weren&amp;#039;t good enough! The Catweasel Controller (all four versions of it) are essentially unsupported by the manufacturer. Developer support has tended to be poor, with little hardware documentation available. On top of all this, the drivers only allow discs to be written on machines running Linux 2.4 (a very old Linux Kernel release which has been essentially abandoned since the mid-2000s) or MS-DOS.&lt;br /&gt;
&lt;br /&gt;
Ultimately I wanted to create a hardware-based disc reader/writer which could be used on any system with a Full-Speed-capable (12Mbps) USB port. Whether that is a PC, a Mac or some other platform is entirely up to you, but in general, if it runs Linux, supports USB and has a libusb port, it&amp;#039;ll most likely work fine. This even extends to embedded systems like the [http://beagleboard.org/ BeagleBoard], as long as you add some form of storage (e.g. a USB thumb-drive or hard drive).&lt;br /&gt;
&lt;br /&gt;
=== So it&amp;#039;s a Catweasel clone then? ===&lt;br /&gt;
&lt;br /&gt;
Not at all -- the DiscFerret was engineered completely from the ground up, and provides a lot of features that the Catweasel is simply incapable of:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Significantly increased timing resolution&amp;#039;&amp;#039;&amp;#039;. The DiscFerret acquires timing data with a resolution of 10 nanoseconds, for the first time allowing MFM and RLL hard disc drives to be imaged at transition level. On a Catweasel Mk3 or Mk4, the maximum clock frequency is 28.322MHz (about 35ns resolution), with 14.161MHz (70ns) and 7.080MHz (140ns) as options. DiscFerret uses a 100MHz sample rate, providing single-nanosecond timing resolution, and is accurate enough to write a disc with software precompensation (where write-precompensation is applied before the disc is written).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Maximum timing period limited only by available RAM&amp;#039;&amp;#039;&amp;#039;. The DiscFerret can store up to 524288 bytes (that is, 512 binary kilobytes) of acquisition data, or a maximum count of over 67 million timer ticks. This equates to an acquisition time of nearly a second (a disc typically rotates in around a fifth of a second)! The Catweasel is always limited to 128 counts per period, meaning that the acquisition clock must be slowed down when imaging at lower bit rates, or the hardware counter will overflow.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hardware-based reading and writing of hard-sector discs&amp;#039;&amp;#039;&amp;#039;. Literally &amp;quot;set it and forget it&amp;quot; -- enable the track-mark detector, specify how many sectors to skip (if any), and how many sectors to read, then trigger the acquisition. Simple!&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MFM sync-word (sequence) detection with &amp;quot;don&amp;#039;t care&amp;quot; bits&amp;#039;&amp;#039;&amp;#039;. This is exactly what the name suggests: a module which allows the DiscFerret to scan the incoming data stream for a specific bit sequence, then start or stop the acquisition. Bits can be masked off (ignored) if necessary, which allows for ranges of sync-words to be specified. The start and stop masks and sync-words can be specified completely independently of each other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What happens if I use the wrong power supply? ===&lt;br /&gt;
&lt;br /&gt;
In most cases, nothing. The DiscFerret incorporates a reverse-polarity protection circuit, which reduces the risk of damage due to the use of an incorrect power supply. This circuit has been tested up to 20V, which exceeds the input voltage rating of the DC power connector, and the output voltage of most off-the-shelf DC power supplies.&lt;br /&gt;
&lt;br /&gt;
In the event of a reverse-polarity event, the power light on the power supply (if present) will be lit, while the power light on the DiscFerret will not (as the protection circuit is preventing the power from reaching the DiscFerret).&lt;br /&gt;
&lt;br /&gt;
It should be noted that the protection circuit is intended as a last-resort safety device, and should not be &amp;quot;tested&amp;quot; or &amp;quot;tried out&amp;quot; by the end user. In situations where the DiscFerret is exposed to both reverse polarity and extreme overvoltage, the protection circuit may fail to operate. Always use the power supply which was supplied with the DiscFerret, or an identically-specified replacement.&lt;br /&gt;
&lt;br /&gt;
If a higher-voltage power supply is attached to the DiscFerret, the &amp;quot;12V&amp;quot; output on the power output connector will rise to match the input voltage. The 5V output will remain at 5V (except in cases of extreme overvoltage). Once again, your DiscFerret will probably survive, but your disc drive almost certainly won&amp;#039;t...&lt;br /&gt;
&lt;br /&gt;
=== How much power does the DiscFerret need? ===&lt;br /&gt;
&lt;br /&gt;
The DiscFerret requires a 12V power supply, with a maximum current consumption of around 1.5A if powering the DiscFerret in &amp;quot;stand-alone mode&amp;quot; (where the power output socket is unused). This increases to around 3.5A if an external drive is being powered from the DiscFerret&amp;#039;s power output socket, assuming the drive is consuming the maximum allocation of 1.5A on both the 5V and 12V power outputs.&lt;br /&gt;
&lt;br /&gt;
If the external +12V output is not being used, the input voltage can be increased to a maximum of 15V DC, making it possible to run the DiscFerret from a standard 13.8V battery pack. It is, however, inadvisable to use an automotive (&amp;quot;cigarette lighter&amp;quot;) power socket as a power source, due to the large amount of electrical noise present on motor vehicle power supplies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I buy a DiscFerret? ===&lt;br /&gt;
&lt;br /&gt;
You can buy a DiscFerret through the [http://store.discferret.com/ DiscFerret Store].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Questions about the DiscFerret Wiki ==&lt;br /&gt;
&lt;br /&gt;
=== Why can&amp;#039;t I edit pages? ===&lt;br /&gt;
&lt;br /&gt;
To try and prevent the Wiki from being &amp;#039;spammed&amp;#039; (filled with unsolicited advertising and other garbage), editing has been restricted to registered users only. It&amp;#039;s very easy to become a registered user -- simply scroll up to the top of this page, click the &amp;quot;Log in / create account&amp;quot; link at the top right, and follow the instructions.&lt;br /&gt;
&lt;br /&gt;
Some high-traffic pages are edit-restricted (notably the home page and the pages in the DiscFerret: hierarchy). If you need to have one of these pages modified, please leave a message on [[User_talk:Philpem]].&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=361</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=361"/>
				<updated>2011-12-23T03:03:26Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: Unprotected &amp;quot;DiscFerret&amp;quot;: user account creation has been disabled and only developers have access. no need to protect individual pages.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on just about any floppy disc, and some MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS and the Intel MDS M2FM format. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware is licensed under a semi-permissive licence, while the software is released either under the GNU GPL or the Apache Public Licence.&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=360</id>
		<title>DiscFerret</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=DiscFerret&amp;diff=360"/>
				<updated>2011-12-23T02:44:30Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DiscFerret is a combination of hardware and software that allows a standard desktop computer to read, analyse and decode the data on just about any floppy disc, and some MFM and RLL hard disc drives. This includes standard formats like PC DOS, but also more unusual formats like AmigaDOS and the Intel MDS M2FM format. Imaging is performed at the lowest possible level -- that of magnetic transitions, which allows everything which can be represented on-disc to be imaged.&lt;br /&gt;
&lt;br /&gt;
The source code and CAD files for the DiscFerret design are completely open-sourced: the hardware is licensed under a semi-permissive licence, while the software is released either under the GNU GPL or the Apache Public Licence.&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
2011-DEC-23 -- DiscFerret development has now resumed after a &amp;quot;brief&amp;quot; hiatus. Microcode updates are on the [[Downloads]] page, and the source code is available from the usual place (http://hg.discferret.com/). --[[User:Philpem|Philpem]] 02:44, 23 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
2011-MAR-21 -- The DiscFerret now supports 8-inch disc drives. Support has been added to Microcode 0x0021; the source code for this is in the &amp;quot;microcode&amp;quot; repository. -- [[User:Philpem|Philpem]] 01:22, 21 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[DiscFerret:FAQ|FAQ]]&lt;br /&gt;
* [[DiscFerret:Downloads|Downloads]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Disc formats|Disc format documentation]]&lt;br /&gt;
* [[:Category:Disc image files|Image file format documentation]]&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=NorthStar_10-sector_formats&amp;diff=359</id>
		<title>NorthStar 10-sector formats</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=NorthStar_10-sector_formats&amp;diff=359"/>
				<updated>2011-12-23T02:42:08Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* Single-density format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc formats]]&lt;br /&gt;
&lt;br /&gt;
== Description and common features ==&lt;br /&gt;
&lt;br /&gt;
10-sector hard-sectored formats used by NorthStar NSDOS and CP/M systems (e.g. NorthStar Horizon and NorthStar Advantage).&lt;br /&gt;
&lt;br /&gt;
Two variants are known:&lt;br /&gt;
* Single Density (FM)&lt;br /&gt;
* Double Density (MFM)&lt;br /&gt;
&lt;br /&gt;
Both formats have 35 tracks, and 10 hardware-defined sectors.&lt;br /&gt;
&lt;br /&gt;
Things still unknown:&lt;br /&gt;
* Bit order of data -- is it LSB first, or MSB first?&lt;br /&gt;
* Byte order of data -- little or big endian? Does this matter?&lt;br /&gt;
* Description of check character computation is ambiguous. Need to find some example code e.g. Boot PROM to figure this out.&lt;br /&gt;
&lt;br /&gt;
== Single-density format ==&lt;br /&gt;
&lt;br /&gt;
References: [http://www.hartetechnologies.com/manuals/Northstar/North%20Star%20MDS-A-D%20Double%20Density%20Manual.pdf NorthStar MDS-A-D Manual] (p. 33)&lt;br /&gt;
&lt;br /&gt;
=== Encoding method ===&lt;br /&gt;
Frequency Modulation. Two transitions per bit-cell, one clock (always present), one data (present if data bit is a &amp;#039;1&amp;#039;, otherwise skipped). Data rate unknown.&lt;br /&gt;
&lt;br /&gt;
=== Track format ===&lt;br /&gt;
Each track consists of ten sectors, whose position is specified by hardware (hard-sector index pulses). The NorthStar hardware triggers off of the leading edge of an index pulse, then waits for 96 microseconds to pass before enabling the read/write circuitry (this is the &amp;#039;&amp;#039;&amp;#039;post index gap&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
Each sector contains, in order:&lt;br /&gt;
* 16 bytes, zeroes. These allow the PLO to synchronise itself to the incoming data stream&lt;br /&gt;
* 1 byte synchronisation character. Always 0xFB.&lt;br /&gt;
* 256 bytes of data (payload)&lt;br /&gt;
* 1 byte check character&lt;br /&gt;
&lt;br /&gt;
==== Check character computation ====&lt;br /&gt;
From the NorthStar MDS-A-D Manual:&lt;br /&gt;
 The check character is computed iteratively by setting it to zero and then exclusive ORing each successive data byte value with the current value of the check character and left cycling the result.&lt;br /&gt;
&lt;br /&gt;
This source code (from [http://www.hartetechnologies.com/manuals/Northstar/NSDOS.ASM Barry Watzman&amp;#039;s disassembly of NS-DOS]) makes it a little more obvious what&amp;#039;s really happening:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;READ	MOV	B,C		;MOVE 0 TO B&lt;br /&gt;
READ1	LDAX	D		;THIS IS THE ACTUAL DATA READ&lt;br /&gt;
	MOV	M,A		;STORE DATA IN MEMORY&lt;br /&gt;
	XRA	B		;I THINK THIS ADDS TO CKSUM&lt;br /&gt;
	RLC			;THIS TOO&lt;br /&gt;
	MOV	B,A		;MOVE PARTIAL CKSUM TO B&lt;br /&gt;
	INX	 H		;SET H FOR NEXT BYTE&lt;br /&gt;
	DCR	C		;GOING TO READ 256 BYTES &amp;amp; CKSUM&lt;br /&gt;
	JNZ	READ1		;READ MORE DATA&lt;br /&gt;
	LDAX	D		;READ THE CHECKSUM FROM DISK&lt;br /&gt;
	XRA	B		;COMPARE IT WITH CALCULATED CKSUM&lt;br /&gt;
	JZ	LE9C4		;IF THEY ARE SAME GO ON&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s also a disassembly of the Northstar boot PROM: http://www.sol20.org/northstar/nsboot.asm.&lt;br /&gt;
There are some other interesting Northstar files on the same site: http://www.sol20.org/programs.html#Northstar.&lt;br /&gt;
&lt;br /&gt;
What we can take away from this is:&lt;br /&gt;
&lt;br /&gt;
* The check character is initialised to zero when reading the sector&lt;br /&gt;
* Every data byte in the payload is first XORed with the current checksum, then the checksum is barrel-rotated left. See the explanation of the RLC instruction in [http://neil.franklin.ch/Info_Texts/Instruction_Set_8080 Neil Franklin&amp;#039;s 8080 instruction set reference] -- note that [http://www.textfiles.com/programming/CARDS/8080a Jonathan Bowen&amp;#039;s 8080A Reference Card] describes RLC as &amp;quot;Rotate Left, Circular&amp;quot;, which is a bit of a giveaway.&lt;br /&gt;
&lt;br /&gt;
Thus the C implementation of this algorithm would be something along the lines of:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
// UNTESTED code to calculate the cyclic check code for a Northstar disc sector&lt;br /&gt;
unsigned char northstar_crc(unsigned char last_crc, unsigned char data) {&lt;br /&gt;
  unsigned char crc = last_crc;&lt;br /&gt;
  crc += data;&lt;br /&gt;
  crc = ((crc &amp;lt;&amp;lt; 1)&amp;amp;0xfe) | ((crc &amp;gt;&amp;gt; 7)&amp;amp;1);&lt;br /&gt;
  return crc;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Double-density format ==&lt;br /&gt;
References: [http://www.hartetechnologies.com/manuals/Northstar/North%20Star%20MDS-A-D%20Double%20Density%20Manual.pdf NorthStar MDS-A-D Manual] (p. 33)&lt;br /&gt;
&lt;br /&gt;
=== Encoding method ===&lt;br /&gt;
Modified Frequency Modulation. Two transitions per bit-cell, one clock (only present if the previous and current data bits are both zero), one data (present if data bit is a &amp;#039;1&amp;#039;, otherwise skipped). Data rate unknown.&lt;br /&gt;
&lt;br /&gt;
=== Track format ===&lt;br /&gt;
Each track consists of ten sectors, whose position is specified by hardware (hard-sector index pulses). The NorthStar hardware triggers off of the leading edge of an index pulse, then waits for 96 microseconds to pass before enabling the read/write circuitry (this is the &amp;#039;&amp;#039;&amp;#039;post index gap&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
Each sector contains, in order:&lt;br /&gt;
* 32 bytes, zeroes. These allow the PLO to synchronise itself to the incoming data stream&lt;br /&gt;
* 2 synchronisation bytes. Always 0xFB.&lt;br /&gt;
* 256 bytes of data (payload)&lt;br /&gt;
* 1 byte check character&lt;br /&gt;
&lt;br /&gt;
The check character is computed as per the Single-Density NorthStar format.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=358</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=358"/>
				<updated>2011-06-22T22:07:32Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Credits:&amp;#039;&amp;#039;&amp;#039; Some information provided (in private email) by Karsten Scheibler.&lt;br /&gt;
&lt;br /&gt;
This format contains raw counter values as provided (and understood) by the Catweasel controllers. This means that the encoded data stream follows the same encoding rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** PhysTrack = AbsTrack / NumHeads&lt;br /&gt;
** PhysHead = AbsTrack % NumHeads&lt;br /&gt;
&lt;br /&gt;
Note that for the above equations, the forward-slash symbol denotes integer division, while the percent symbol denotes an integer modulo operation.&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1. Used by old versions of CWTool, readable but not generated by the current version.&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2. Used by old versions of CWTool, readable but not generated by the current version.&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3. Current file format version.&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TRACK_MAGIC&amp;#039;&amp;#039;&amp;#039; -- one byte, 0xCA&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Track&amp;#039;&amp;#039;&amp;#039; -- one byte, absolute track number&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clock&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Flags&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Payload size&amp;#039;&amp;#039;&amp;#039; -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
These bytes have the following function:&lt;br /&gt;
* &amp;#039;&amp;#039;Track&amp;#039;&amp;#039; stores the Absolute Track Number for the given track, as described above.&lt;br /&gt;
* &amp;#039;&amp;#039;Clock&amp;#039;&amp;#039; indicates the clock speed which was used to acquire the data. This is permitted to have one of the following values:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;: 14MHz (14.161MHz?)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;: 28MHz (28.322MHz?)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: 56MHz (actually 56.644MHz, according to http://www.schoenfeld.de/inside/Inside_CWMK3.txt)&lt;br /&gt;
* &amp;#039;&amp;#039;Flags&amp;#039;&amp;#039; is a bit-field which stores a list of possible acquisition flags which apply to the track:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;: Writable. If a raw image is captured without any further post-processing, there is no way to guarantee that the image could be written back to disc without errors (e.g. one sector may get corrupted if the data stream ends in mid-sector). This bit is set by CWTool for images which have been generated by CWTool itself, instead of those which were read from a disc.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;: Index Stored. Index data has been stored with the track. The most significant bit of each timing value contains the state of the index bit during that timing period. Soft-sectored discs have one index hole per rotation, so this is active (bit set) once per disc rotation.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 2&amp;#039;&amp;#039;&amp;#039;: Index Aligned. The track data has been aligned to the index mark. DOS discs are usually written this way, but Amiga and CBM 1541 discs (which have no concept of an &amp;quot;index&amp;quot; except the track sync marker) are not.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 3&amp;#039;&amp;#039;&amp;#039;: No Correction. Early versions of CWTool stored timing values decremented by 1 (instead of the actual timing value). Images written with the current version of CWTool do not require this correction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Text-based file format ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
This feature is classified as &amp;quot;experimental&amp;quot; (ref: email, Karsten Scheibler, 2011-07-19) and intended to ease manual recovery of damaged data. Individual tracks and sectors may be exported as text, edited, then reimported.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the data is being stored in hexadecimal:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Track, Clock and Flags function as described in the Binary Formats section above. They are always stored as decimal numbers, however the actual track data may be stored in either decimal (if the &amp;#039;&amp;#039;track_data&amp;#039;&amp;#039; keyword was used) or hexadecimal (if the &amp;#039;&amp;#039;track_data_hex&amp;#039;&amp;#039; keyword was used).&lt;br /&gt;
&lt;br /&gt;
No track data length is stored -- this is determined at run-time by the format loader.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=286</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=286"/>
				<updated>2011-06-18T23:04:15Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Credits:&amp;#039;&amp;#039;&amp;#039; Some information provided (in private email) by Karsten Scheibler.&lt;br /&gt;
&lt;br /&gt;
This format contains raw counter values as provided (and understood) by the Catweasel controllers. This means that the encoded data stream follows the same encoding rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** PhysTrack = AbsTrack / NumHeads&lt;br /&gt;
** PhysHead = AbsTrack % NumHeads&lt;br /&gt;
&lt;br /&gt;
Note that for the above equations, the forward-slash symbol denotes integer division, while the percent symbol denotes an integer modulo operation.&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1. Used by old versions of CWTool, readable but not generated by the current version.&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2. Used by old versions of CWTool, readable but not generated by the current version.&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3. Current file format version.&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TRACK_MAGIC&amp;#039;&amp;#039;&amp;#039; -- one byte, 0xCA&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Track&amp;#039;&amp;#039;&amp;#039; -- one byte, absolute track number&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clock&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Flags&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Payload size&amp;#039;&amp;#039;&amp;#039; -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
These bytes have the following function:&lt;br /&gt;
* &amp;#039;&amp;#039;Track&amp;#039;&amp;#039; stores the Absolute Track Number for the given track, as described above.&lt;br /&gt;
* &amp;#039;&amp;#039;Clock&amp;#039;&amp;#039; indicates the clock speed which was used to acquire the data. This is permitted to have one of the following values:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;: 14MHz (14.161MHz?)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;: 28MHz (28.322MHz?)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: 56MHz (actually 56.644MHz, according to http://www.schoenfeld.de/inside/Inside_CWMK3.txt)&lt;br /&gt;
* &amp;#039;&amp;#039;Flags&amp;#039;&amp;#039; is a bit-field which stores a list of possible acquisition flags which apply to the track:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;: Writable. If a raw image is captured without any further post-processing, there is no way to guarantee that the image could be written back to disc without errors (e.g. one sector may get corrupted if the data stream ends in mid-sector). This bit is set by CWTool for images which have been generated by CWTool itself, instead of those which were read from a disc.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;: Index Stored. Index data has been stored with the track. The most significant bit of each timing value contains the state of the index bit during that timing period. Soft-sectored discs have one index hole per rotation, so this is active (bit set) once per disc rotation.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 2&amp;#039;&amp;#039;&amp;#039;: Index Aligned. The track data has been aligned to the index mark. DOS discs are usually written this way, but Amiga and CBM 1541 discs (which have no concept of an &amp;quot;index&amp;quot; except the track sync marker) are not.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 3&amp;#039;&amp;#039;&amp;#039;: No Correction. Early versions of CWTool stored timing values decremented by 1 (instead of the actual timing value). Images written with the current version of CWTool do not require this correction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Text-based file format ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
This feature is classified as &amp;quot;experimental&amp;quot; (ref: email, Karsten Scheibler, 2011-07-19) and intended to ease manual recovery of damaged data. Individual tracks and sectors may be exported as text, edited, then reimported.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the data is being stored in hexadecimal:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Track, Clock and Flags function as described in the Binary Formats section above. They are always stored as decimal numbers, however the actual track data may be stored in either decimal (if the &amp;#039;&amp;#039;track_data&amp;#039;&amp;#039; keyword was used) or hexadecimal (if the &amp;#039;&amp;#039;track_data_hex&amp;#039;&amp;#039; keyword was used).&lt;br /&gt;
&lt;br /&gt;
No track data length is stored -- this is determined at run-time by the format loader.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=280</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=280"/>
				<updated>2011-06-14T16:22:24Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* Text-based file format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** PhysTrack = AbsTrack / NumHeads&lt;br /&gt;
** PhysHead = AbsTrack % NumHeads&lt;br /&gt;
&lt;br /&gt;
Note that for the above equations, the forward-slash symbol denotes integer division, while the percent symbol denotes an integer modulo operation.&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TRACK_MAGIC&amp;#039;&amp;#039;&amp;#039; -- one byte, 0xCA&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Track&amp;#039;&amp;#039;&amp;#039; -- one byte, absolute track number&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clock&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Flags&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Payload size&amp;#039;&amp;#039;&amp;#039; -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
These bytes have the following function:&lt;br /&gt;
* &amp;#039;&amp;#039;Track&amp;#039;&amp;#039; stores the Absolute Track Number for the given track, as described above.&lt;br /&gt;
* &amp;#039;&amp;#039;Clock&amp;#039;&amp;#039; indicates the clock speed which was used to acquire the data. This is permitted to have one of the following values:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;: 14MHz (14.161MHz?)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;: 28MHz (28.322MHz?)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: 56MHz (actually 56.644MHz, according to http://www.schoenfeld.de/inside/Inside_CWMK3.txt)&lt;br /&gt;
* &amp;#039;&amp;#039;Flags&amp;#039;&amp;#039; is a bit-field which stores a list of possible acquisition flags which apply to the track:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;: Writable&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;: Index Stored. Index data has been stored with the track. The most significant bit of each timing value contains the state of the index bit during that timing period.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 2&amp;#039;&amp;#039;&amp;#039;: Index Aligned. The track data has been aligned to the index mark.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 3&amp;#039;&amp;#039;&amp;#039;: No Correction&lt;br /&gt;
&lt;br /&gt;
== Text-based file format ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the data is being stored in hexadecimal:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Track, Clock and Flags function as described in the Binary Formats section above. They are always stored as decimal numbers, however the actual track data may be stored in either decimal (if the &amp;#039;&amp;#039;track_data&amp;#039;&amp;#039; keyword was used) or hexadecimal (if the &amp;#039;&amp;#039;track_data_hex&amp;#039;&amp;#039; keyword was used).&lt;br /&gt;
&lt;br /&gt;
No track data length is stored -- this is determined at run-time by the format loader.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=279</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=279"/>
				<updated>2011-06-14T16:21:18Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* Binary file formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** PhysTrack = AbsTrack / NumHeads&lt;br /&gt;
** PhysHead = AbsTrack % NumHeads&lt;br /&gt;
&lt;br /&gt;
Note that for the above equations, the forward-slash symbol denotes integer division, while the percent symbol denotes an integer modulo operation.&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TRACK_MAGIC&amp;#039;&amp;#039;&amp;#039; -- one byte, 0xCA&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Track&amp;#039;&amp;#039;&amp;#039; -- one byte, absolute track number&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clock&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Flags&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Payload size&amp;#039;&amp;#039;&amp;#039; -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
These bytes have the following function:&lt;br /&gt;
* &amp;#039;&amp;#039;Track&amp;#039;&amp;#039; stores the Absolute Track Number for the given track, as described above.&lt;br /&gt;
* &amp;#039;&amp;#039;Clock&amp;#039;&amp;#039; indicates the clock speed which was used to acquire the data. This is permitted to have one of the following values:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;: 14MHz (14.161MHz?)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;: 28MHz (28.322MHz?)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: 56MHz (actually 56.644MHz, according to http://www.schoenfeld.de/inside/Inside_CWMK3.txt)&lt;br /&gt;
* &amp;#039;&amp;#039;Flags&amp;#039;&amp;#039; is a bit-field which stores a list of possible acquisition flags which apply to the track:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;: Writable&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;: Index Stored. Index data has been stored with the track. The most significant bit of each timing value contains the state of the index bit during that timing period.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 2&amp;#039;&amp;#039;&amp;#039;: Index Aligned. The track data has been aligned to the index mark.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 3&amp;#039;&amp;#039;&amp;#039;: No Correction&lt;br /&gt;
&lt;br /&gt;
== Text-based file format ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the data is being stored in hexadecimal:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Track, Clock and Flags function as described in the Binary Formats section above. They are always stored as decimal numbers, however the actual track data may be stored in either decimal (if the &amp;#039;&amp;#039;track_data&amp;#039;&amp;#039; keyword was used) or hexadecimal (if the &amp;#039;&amp;#039;track_data_hex&amp;#039;&amp;#039; keyword was used).&lt;br /&gt;
&lt;br /&gt;
No track data length is stored -- this is determined at run-time by the format loader.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=278</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=278"/>
				<updated>2011-06-14T16:18:28Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* Binary file formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** PhysTrack = AbsTrack / NumHeads&lt;br /&gt;
** PhysHead = AbsTrack % NumHeads&lt;br /&gt;
&lt;br /&gt;
Note that for the above equations, the forward-slash symbol denotes integer division, while the percent symbol denotes an integer modulo operation.&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TRACK_MAGIC&amp;#039;&amp;#039;&amp;#039; -- one byte, 0xCA&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Track&amp;#039;&amp;#039;&amp;#039; -- one byte, absolute track number&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clock&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Flags&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Payload size&amp;#039;&amp;#039;&amp;#039; -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
These bytes have the following function:&lt;br /&gt;
* &amp;#039;&amp;#039;Track&amp;#039;&amp;#039; stores the Absolute Track Number for the given track, as described above.&lt;br /&gt;
* &amp;#039;&amp;#039;Clock&amp;#039;&amp;#039; indicates the clock speed which was used to acquire the data. This is permitted to have one of the following values:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;: 14MHz&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;: 28MHz&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: 56MHz&lt;br /&gt;
* &amp;#039;&amp;#039;Flags&amp;#039;&amp;#039; is a bit-field which stores a list of possible acquisition flags which apply to the track:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;: Writable&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;: Index Stored. Index data has been stored with the track. The most significant bit of each timing value contains the state of the index bit during that timing period.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 2&amp;#039;&amp;#039;&amp;#039;: Index Aligned. The track data has been aligned to the index mark.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 3&amp;#039;&amp;#039;&amp;#039;: No Correction&lt;br /&gt;
&lt;br /&gt;
== Text-based file format ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the data is being stored in hexadecimal:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Track, Clock and Flags function as described in the Binary Formats section above. They are always stored as decimal numbers, however the actual track data may be stored in either decimal (if the &amp;#039;&amp;#039;track_data&amp;#039;&amp;#039; keyword was used) or hexadecimal (if the &amp;#039;&amp;#039;track_data_hex&amp;#039;&amp;#039; keyword was used).&lt;br /&gt;
&lt;br /&gt;
No track data length is stored -- this is determined at run-time by the format loader.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=277</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=277"/>
				<updated>2011-06-14T13:43:20Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: /* Binary file formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** PhysTrack = AbsTrack / NumHeads&lt;br /&gt;
** PhysHead = AbsTrack % NumHeads&lt;br /&gt;
&lt;br /&gt;
Note that for the above equations, the forward-slash symbol denotes integer division, while the percent symbol denotes an integer modulo operation.&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TRACK_MAGIC&amp;#039;&amp;#039;&amp;#039; -- one byte, 0xCA&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Track&amp;#039;&amp;#039;&amp;#039; -- one byte, absolute track number&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clock&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Flags&amp;#039;&amp;#039;&amp;#039; -- one byte&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Payload size&amp;#039;&amp;#039;&amp;#039; -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
These bytes have the following function:&lt;br /&gt;
* &amp;#039;&amp;#039;Track&amp;#039;&amp;#039; stores the Absolute Track Number for the given track, as described above.&lt;br /&gt;
* &amp;#039;&amp;#039;Clock&amp;#039;&amp;#039; indicates the clock speed which was used to acquire the data. This is permitted to have one of the following values:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;: 14MHz&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;: 28MHz&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: 56MHz&lt;br /&gt;
* &amp;#039;&amp;#039;Flags&amp;#039;&amp;#039; is a bit-field which stores a list of possible acquisition flags which apply to the track:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;: Writable&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;: Index Stored. Index data has been stored with the track.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 2&amp;#039;&amp;#039;&amp;#039;: Index Aligned. The track data has been aligned to the index mark.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 3&amp;#039;&amp;#039;&amp;#039;: No Correction&lt;br /&gt;
&lt;br /&gt;
== Text-based file format ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the data is being stored in hexadecimal:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Track, Clock and Flags function as described in the Binary Formats section above. They are always stored as decimal numbers, however the actual track data may be stored in either decimal (if the &amp;#039;&amp;#039;track_data&amp;#039;&amp;#039; keyword was used) or hexadecimal (if the &amp;#039;&amp;#039;track_data_hex&amp;#039;&amp;#039; keyword was used).&lt;br /&gt;
&lt;br /&gt;
No track data length is stored -- this is determined at run-time by the format loader.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=276</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=276"/>
				<updated>2011-06-14T13:42:34Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** PhysTrack = AbsTrack / NumHeads&lt;br /&gt;
** PhysHead = AbsTrack % NumHeads&lt;br /&gt;
&lt;br /&gt;
Note that for the above equations, the forward-slash symbol denotes integer division, while the percent symbol denotes an integer modulo operation.&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* TRACK_MAGIC -- one byte, 0xCA&lt;br /&gt;
* Track -- one byte, absolute track number&lt;br /&gt;
* Clock -- one byte&lt;br /&gt;
* Flags -- one byte&lt;br /&gt;
* Payload size -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
These bytes have the following function:&lt;br /&gt;
* &amp;#039;&amp;#039;Track&amp;#039;&amp;#039; stores the Absolute Track Number for the given track, as described above.&lt;br /&gt;
* &amp;#039;&amp;#039;Clock&amp;#039;&amp;#039; indicates the clock speed which was used to acquire the data. This is permitted to have one of the following values:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;: 14MHz&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;: 28MHz&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: 56MHz&lt;br /&gt;
* &amp;#039;&amp;#039;Flags&amp;#039;&amp;#039; is a bit-field which stores a list of possible acquisition flags which apply to the track:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;: Writable&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;: Index Stored. Index data has been stored with the track.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 2&amp;#039;&amp;#039;&amp;#039;: Index Aligned. The track data has been aligned to the index mark.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 3&amp;#039;&amp;#039;&amp;#039;: No Correction&lt;br /&gt;
&lt;br /&gt;
== Text-based file format ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the data is being stored in hexadecimal:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Track, Clock and Flags function as described in the Binary Formats section above. They are always stored as decimal numbers, however the actual track data may be stored in either decimal (if the &amp;#039;&amp;#039;track_data&amp;#039;&amp;#039; keyword was used) or hexadecimal (if the &amp;#039;&amp;#039;track_data_hex&amp;#039;&amp;#039; keyword was used).&lt;br /&gt;
&lt;br /&gt;
No track data length is stored -- this is determined at run-time by the format loader.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=275</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=275"/>
				<updated>2011-06-14T13:41:34Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;: AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;: PhysTrack = AbsTrack / NumHeads, PhysHead = AbsTrack % NumHeads  (forward-slash denotes integer division, percent denotes an integer modulo operation)&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* TRACK_MAGIC -- one byte, 0xCA&lt;br /&gt;
* Track -- one byte, absolute track number&lt;br /&gt;
* Clock -- one byte&lt;br /&gt;
* Flags -- one byte&lt;br /&gt;
* Payload size -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
These bytes have the following function:&lt;br /&gt;
* &amp;#039;&amp;#039;Track&amp;#039;&amp;#039; stores the Absolute Track Number for the given track, as described above.&lt;br /&gt;
* &amp;#039;&amp;#039;Clock&amp;#039;&amp;#039; indicates the clock speed which was used to acquire the data. This is permitted to have one of the following values:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;: 14MHz&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;: 28MHz&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;: 56MHz&lt;br /&gt;
* &amp;#039;&amp;#039;Flags&amp;#039;&amp;#039; is a bit-field which stores a list of possible acquisition flags which apply to the track:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;: Writable&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;: Index Stored. Index data has been stored with the track.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 2&amp;#039;&amp;#039;&amp;#039;: Index Aligned. The track data has been aligned to the index mark.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bit 3&amp;#039;&amp;#039;&amp;#039;: No Correction&lt;br /&gt;
&lt;br /&gt;
== Text-based file format ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the data is being stored in hexadecimal:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Track, Clock and Flags function as described in the Binary Formats section above. They are always stored as decimal numbers, however the actual track data may be stored in either decimal (if the &amp;#039;&amp;#039;track_data&amp;#039;&amp;#039; keyword was used) or hexadecimal (if the &amp;#039;&amp;#039;track_data_hex&amp;#039;&amp;#039; keyword was used).&lt;br /&gt;
&lt;br /&gt;
No track data length is stored -- this is determined at run-time by the format loader.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=274</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=274"/>
				<updated>2011-06-14T13:30:53Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;: AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;: PhysTrack = AbsTrack / NumHeads, PhysHead = AbsTrack % NumHeads  (forward-slash denotes integer division, percent denotes an integer modulo operation)&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* TRACK_MAGIC -- one byte, 0xCA&lt;br /&gt;
* Track -- one byte, absolute track number&lt;br /&gt;
* Clock -- one byte&lt;br /&gt;
* Flags -- one byte&lt;br /&gt;
* Payload size -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
== Text-based file formats ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
track_data track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the data is being stored in hexadecimal:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
track_data_hex track clock flags { data data ... }&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Track, Clock and Flags function as described in the Binary Formats section above. They are always stored as decimal numbers, however the actual track data may be stored in either decimal (if the &amp;#039;&amp;#039;track_data&amp;#039;&amp;#039; keyword was used) or hexadecimal (if the &amp;#039;&amp;#039;track_data_hex&amp;#039;&amp;#039; keyword was used).&lt;br /&gt;
&lt;br /&gt;
No track data length is stored -- this is determined at run-time by the format loader.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=273</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=273"/>
				<updated>2011-06-14T13:26:07Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format originator:&amp;#039;&amp;#039;&amp;#039; CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;: AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;: PhysTrack = AbsTrack / NumHeads, PhysHead = AbsTrack % NumHeads  (forward-slash denotes integer division, percent denotes an integer modulo operation)&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* TRACK_MAGIC -- one byte, 0xCA&lt;br /&gt;
* Physical track number -- one byte&lt;br /&gt;
* Clock -- one byte&lt;br /&gt;
* Flags -- one byte&lt;br /&gt;
* Payload size -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
== Text-based file formats ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags {&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=272</id>
		<title>CWTool image format</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=CWTool_image_format&amp;diff=272"/>
				<updated>2011-06-14T13:25:45Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: Created page with &amp;quot;Category:Disc image files  *Format originator:* CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)  == Common features == Track numbers are stored as &amp;#039;absolute&amp;#039; tracks...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
*Format originator:* CWTool by Karsten Scheibler (http://www.unusedino.de/cw/)&lt;br /&gt;
&lt;br /&gt;
== Common features ==&lt;br /&gt;
Track numbers are stored as &amp;#039;absolute&amp;#039; tracks. If a drive has only one magnetic head, the track number will match the physical track number used to read the given track.&lt;br /&gt;
&lt;br /&gt;
When a drive has more than one head (e.g. a 3.5-inch double-sided 80-track drive), the following conversions are used:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from physical track/head numbers to absolute track number&amp;#039;&amp;#039;&amp;#039;: AbsTrack = (PhysTrack * NumHeads) + PhysHead&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Converting from absolute track number to physical track/head numbers&amp;#039;&amp;#039;&amp;#039;: PhysTrack = AbsTrack / NumHeads, PhysHead = AbsTrack % NumHeads  (forward-slash denotes integer division, percent denotes an integer modulo operation)&lt;br /&gt;
&lt;br /&gt;
This means that our typical 3.5-inch floppy disc with two physical heads and 80 physical tracks will -- to CWTool -- be seen as having 160 absolute tracks. Thus, in order to decode back to a cyl/head address, we need to know how many heads the original drive had, and how many were used to image the disc. Failing that, we can make an educated guess based on the maximum absolute track number seen in the image (e.g. a greater than 85 absolute tracks is likely to indicate that the image was created from a double-sided disc).&lt;br /&gt;
&lt;br /&gt;
== Binary file formats ==&lt;br /&gt;
All CWTool binary image formats begin with a 32-byte &amp;quot;magic string&amp;quot; which identifies the file format version. Possible magic strings include:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;cwtool raw data&amp;quot; -- binary format 1&lt;br /&gt;
* &amp;quot;cwtool raw data 2&amp;quot; -- binary format 2&lt;br /&gt;
* &amp;quot;cwtool raw data 3&amp;quot; -- binary format 3&lt;br /&gt;
&lt;br /&gt;
Binary formats store tracks as a sequence of data blocks with a header prepended. This header consists of:&lt;br /&gt;
&lt;br /&gt;
* TRACK_MAGIC -- one byte, 0xCA&lt;br /&gt;
* Physical track number -- one byte&lt;br /&gt;
* Clock -- one byte&lt;br /&gt;
* Flags -- one byte&lt;br /&gt;
* Payload size -- 32-bit unsigned integer, little endian (most significant byte first)&lt;br /&gt;
&lt;br /&gt;
== Text-based file formats ==&lt;br /&gt;
This format is unique in that it stores the track data as decimal or hex numbers. The magic string detected by CWTool is &amp;quot;# cwtool raw text 3\n&amp;quot;, where &amp;#039;\n&amp;#039; is an ASCII newline.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;# cwtool raw text 3&lt;br /&gt;
track_data track clock flags {&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=Apple_DiskCopy_4.2&amp;diff=271</id>
		<title>Apple DiskCopy 4.2</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=Apple_DiskCopy_4.2&amp;diff=271"/>
				<updated>2011-06-12T19:35:08Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Attribution: This article was sourced from the 68kMLA Wiki at http://68kmla.org/wiki/DiskCopy_4.2_format_specification. Permission was given in IRC by Balrog and Lord Nightmare to copy the article here for safe-keeping.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This article describes the &amp;#039;&amp;#039;&amp;#039;file format for Apple Disk Copy 4.2&amp;#039;&amp;#039;&amp;#039; .image files&lt;br /&gt;
&lt;br /&gt;
Much information comes from the [[CiderPress]] and [[Mini vMac]] source codes. More authoritative information comes from [http://www.nulib.com/library/FTN.e00005.htm nulib.com]. Some info on tags from [http://www.pagetable.com/?p=50 Inside Macintosh, 1st ed. page II-212]. This format is also used in DiskCopy 4.1. DiskCopy 6.3.3 uses a variant with tags omitted. DART is a variant which adds compression.&lt;br /&gt;
&lt;br /&gt;
==Resource fork notes==&lt;br /&gt;
Disk Copy 4.2 files have a [[resource fork]], but it only contains a copy of the data and tag checksums and can be safely ignored; files without the fork will still work perfectly.&lt;br /&gt;
&lt;br /&gt;
* Disk copy 4.2 images have a type of &amp;#039;dImg&amp;#039; and creator of &amp;#039;dCpy&amp;#039;, without these the program will not recognize the file; they can be easily added to images missing them with resedit.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+DC42 File format Overview&lt;br /&gt;
|-&lt;br /&gt;
!offset !! type/size !! contents&lt;br /&gt;
|-&lt;br /&gt;
|0x00||byte||Length of image name string (&amp;#039;Pascal name length&amp;#039;)&lt;br /&gt;
|-&lt;br /&gt;
|0x01-0x3F||63 bytes||Image name, in ascii, padded with NULs&lt;br /&gt;
|-&lt;br /&gt;
|0x40-0x43||BE_UINT32||Data size in bytes (of block starting at 0x54)&lt;br /&gt;
|-&lt;br /&gt;
|0x44-0x47||BE_UINT32||Tag size in bytes (of block starting after end of Data block)&lt;br /&gt;
|-&lt;br /&gt;
|0x48-0x4B||BE_UINT32||Data Checksum&lt;br /&gt;
|-&lt;br /&gt;
|0x4C-0x4F||BE_UINT32||Tag Checksum&lt;br /&gt;
|-&lt;br /&gt;
|0x50||byte||Disk encoding&lt;br /&gt;
|-&lt;br /&gt;
|0x51||byte||Format Byte&lt;br /&gt;
|-&lt;br /&gt;
|0x52-0x53||BE_UINT16||&amp;#039;0x01 0x00&amp;#039; (&amp;#039;Private Word&amp;#039;) AKA Magic Number&lt;br /&gt;
|-&lt;br /&gt;
|0x54-...||variable||Image data&lt;br /&gt;
|-&lt;br /&gt;
|...-EOF||variable||Tag data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specifics of data fork sections ==&lt;br /&gt;
=== 0x00: Length of image name string ===&lt;br /&gt;
Technically this is part of the 0x01-0x3f area, as pascal strings apparently store their length as their first byte. Effectively the address of the last non-NUL byte of the image name. bytes after the end address are ignored, and sometimes are used to hold extra information, or hold garbage (in the case of the 1.44mb system 6.0.8 startup disk, this is leftovers in memory from the System Additions disk, so the string ends up being System Startupns)&lt;br /&gt;
* Note: A special (bug) case happens when the disk name is &amp;quot;-not a Macintosh disk&amp;quot;, which the name is set to when using dc42 on non-mac diskettes. In that case, the length is set one byte too high; this is probably a bug in dc42 that was just never fixed.&lt;br /&gt;
&lt;br /&gt;
=== 0x01-0x3F: Image name ===&lt;br /&gt;
This is the image name string. It is copied from the volume name of the disk or diskette being imaged.&lt;br /&gt;
&lt;br /&gt;
=== 0x40-0x43: Data block size in bytes ===&lt;br /&gt;
This has one of 4 values on most diskettes:&lt;br /&gt;
 00 06 40 00 (409600 bytes) for 400k GCR disks&lt;br /&gt;
 00 0c 80 00 (819200 bytes) for 800k GCR disks&lt;br /&gt;
 00 0b 40 00 (737280 bytes) for 720k MFM disks&lt;br /&gt;
 00 16 80 00 (1474560 bytes) for 1440k MFM disks&lt;br /&gt;
&lt;br /&gt;
=== 0x44-0x47: Tag size in bytes ===&lt;br /&gt;
This is typically 12 bytes for every 512 bytes in the image, apparently stored in the data mark in each sector on the media. The format for Tag data is described at the bottom of the document, and is important for repairing damaged disks using disk doctor. It is also very important on Lisa Diskettes (according to LisaEM source).&lt;br /&gt;
 00 00 25 80 (9600 bytes) for 400k disks w/tags&lt;br /&gt;
 00 00 4b 00 (19200 bytes) for 800k disks w/tags&lt;br /&gt;
 00 00 00 00 for diskettes with no tags&lt;br /&gt;
&lt;br /&gt;
=== 0x48-0x4B: Data Checksum ===&lt;br /&gt;
The algorithm for this is: start with 00000000, add each consecutive 16 bit Big Endian word of the section, then rotate the 32 bit result right by 1 bit.&lt;br /&gt;
&lt;br /&gt;
=== 0x4c-0x4F: Tag Checksum ===&lt;br /&gt;
The algorithm for this is the same as for the data, however the first 12 bytes of the tag section, if present, are skipped (probably due to a bug in an older disk copy version and kept for compatibility).&lt;br /&gt;
* Tag Checksum is 00 00 00 00 if no tag data is present.&lt;br /&gt;
&lt;br /&gt;
=== 0x50: Disk encoding ===&lt;br /&gt;
This byte describes the encoding used for the disk the data was imaged from, from a &amp;#039;what type of disk is this?&amp;#039; perspective.&lt;br /&gt;
 00 = GCR CLV ssdd (400k)&lt;br /&gt;
 01 = GCR CLV dsdd (800k)&lt;br /&gt;
 02 = MFM CAV dsdd (720k)&lt;br /&gt;
 03 = MFM CAV dshd (1440k)&lt;br /&gt;
 Other encodings may exist, as DC42 was originally designed to be able to image HD20 disks.&lt;br /&gt;
&lt;br /&gt;
=== 0x51: Format Byte ===&lt;br /&gt;
This byte has one of two meanings, depending on whether the disk is GCR format 400k or 800k, or MFM format. The byte is completely ignored for the rare GCR-on-HD format (which always has a 1:1 interleave and is always 2 sided).&lt;br /&gt;
* If disk is GCR format 400k or 800k:&lt;br /&gt;
 This byte is a copy of the GCR format nybble (6 bits),&lt;br /&gt;
 which appears in the headers of every GCR sector.&lt;br /&gt;
 $02 = Mac 400k&lt;br /&gt;
 $12 = (documentation error claims this is for mac 400k disks, but this is wrong)&lt;br /&gt;
 $22 = Disk formatted as Mac 800k&lt;br /&gt;
 $24 = Disk formatted as Prodos 800k (AppleIIgs format)&lt;br /&gt;
 $96 = INVALID (Disk was misformatted or had GCR 0-fill (0x96 which represents data of 0x00)&lt;br /&gt;
 written to its format byte)&lt;br /&gt;
  Values for bitfield:&lt;br /&gt;
  76543210&lt;br /&gt;
  ||||||||&lt;br /&gt;
  |||\\\\\- These 5 bits are sector interleave factor:&lt;br /&gt;
  |||            setting of 02 means 2:1 interleave: 0  8  1 9  2 10 3 11 4 12 5  13 6  14 7  15&lt;br /&gt;
  |||            setting of 04 means 4:1 interleave: 0  4  8 12 1 5  9 13 2 6  10 14 3  7  11 15&lt;br /&gt;
  ||\------ This bit indicates whether a disk is 2 sided or not. 0 = 1 sided, 1 = 2 sided.&lt;br /&gt;
  \\------- always 0, as GCR nybbles are only 6 bits&lt;br /&gt;
*If disk is MFM format:&lt;br /&gt;
 This byte is used to define MFM sector size and whether the disk is&lt;br /&gt;
 two sided or not.&lt;br /&gt;
 Interleave is ALWAYS 1:1 for these formats.&lt;br /&gt;
 $22 = double-sided MFM diskettes with 512 byte sectors&lt;br /&gt;
  Values for bitfield:&lt;br /&gt;
  76543210&lt;br /&gt;
  ||||||||&lt;br /&gt;
  |||\\\\\- These 5 bits are sector size as a multiple of 256 bytes&lt;br /&gt;
  |||       i.e. 02 = 2*256 = 512 bytes per sector&lt;br /&gt;
  ||\------ This bit indicates whether a disk is 2 sided or not. 0 = 1 sided, 1 = 2 sided.&lt;br /&gt;
  \\------- unused, always 0&lt;br /&gt;
&lt;br /&gt;
=== 0x52-0x53: Private Word/Magic Number ===&lt;br /&gt;
This is more or less the &amp;#039;magic number&amp;#039; of any DC42 format file; if it is not $01 $00, it is not a DC42 format file.&lt;br /&gt;
&lt;br /&gt;
=== 0x54-...: Image data ===&lt;br /&gt;
The size in bytes of the data stored here is the value at 0x40-0x43.&lt;br /&gt;
&lt;br /&gt;
=== ...-EOF: Tag data ===&lt;br /&gt;
The size in bytes of the data stored here is the value at 0x44-0x47.&lt;br /&gt;
&lt;br /&gt;
== Tag Data format ==&lt;br /&gt;
The tag data is 12 bytes per 512-byte disk sector, and is stored, like the Image data, in sector order.&lt;br /&gt;
The actual format for each 12-byte block of the Tag data differs for Lisa, MFS and HFS disks,&lt;br /&gt;
and for MFS or HFS any of them may be wrong or absent! be warned!&lt;br /&gt;
* The Tag format for Lisa 400k or 800k disks is currently unknown, but without tags the disks will not function.&lt;br /&gt;
*For MFS filesystems the Tag format is as follows:&lt;br /&gt;
 BE WARNED: when reading tag data, if the bit at 00 40 00 00 of any of the 3 32 bit words of the tag is set, the tag&lt;br /&gt;
  data for the sector it is part of is trashed and can be ignored. There IS a puprose to the data written when 0x40 is set, I&amp;#039;m just not sure what it is.&lt;br /&gt;
 offset	    type/size	 contents&lt;br /&gt;
 0x00       BE_UINT32    File number on disk, within MFS filesystem&lt;br /&gt;
 0x04       BE_UINT16    Flags bitfield:&lt;br /&gt;
           FEDCBA98 76543210&lt;br /&gt;
           |||||||| ||||||||&lt;br /&gt;
           |||||||| |||\\\\\- unknown, seems unused&lt;br /&gt;
           |||||||| ||\------ If set, Tag for this sector is not valid.&lt;br /&gt;
           |||||||| \\------- unknown&lt;br /&gt;
           |||||||\---------- sector content type: 0: system file; 1: user file (guessed)&lt;br /&gt;
           ||||||\----------- sector is part of a: 0: data fork; 1: resource fork&lt;br /&gt;
           |\\\\\------------ unknown&lt;br /&gt;
           \----------------- unknown, sometimes set on the last few sectors of a data or resource fork&lt;br /&gt;
 0x06       BE_UINT16    Logical block number within the file&lt;br /&gt;
 0x08       BE_UINT32    Time of last modification, in seconds since 0:00:00, 1/1/1904&lt;br /&gt;
 Note that the last mod time may be different on the final sector of a file; this may indicate something special.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	<entry>
		<id>https://www.discferret.com/w/index.php?title=Apple_DiskCopy_4.2&amp;diff=270</id>
		<title>Apple DiskCopy 4.2</title>
		<link rel="alternate" type="text/html" href="https://www.discferret.com/w/index.php?title=Apple_DiskCopy_4.2&amp;diff=270"/>
				<updated>2011-06-12T19:34:02Z</updated>
		
		<summary type="html">&lt;p&gt;Philpem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Disc image files]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Attribution: This article was sourced from the 68kMLA Wiki at http://68kmla.org/wiki/DiskCopy_4.2_format_specification. Permission was given in IRC by Balrog and Lord_Nightmare to copy the article here for safe-keeping.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This article describes the &amp;#039;&amp;#039;&amp;#039;file format for Apple Disk Copy 4.2&amp;#039;&amp;#039;&amp;#039; .image files&lt;br /&gt;
&lt;br /&gt;
Much information comes from the [[CiderPress]] and [[Mini vMac]] source codes. More authoritative information comes from [http://www.nulib.com/library/FTN.e00005.htm nulib.com]. Some info on tags from [http://www.pagetable.com/?p=50 Inside Macintosh, 1st ed. page II-212]. This format is also used in DiskCopy 4.1. DiskCopy 6.3.3 uses a variant with tags omitted. DART is a variant which adds compression.&lt;br /&gt;
&lt;br /&gt;
==Resource fork notes==&lt;br /&gt;
Disk Copy 4.2 files have a [[resource fork]], but it only contains a copy of the data and tag checksums and can be safely ignored; files without the fork will still work perfectly.&lt;br /&gt;
&lt;br /&gt;
* Disk copy 4.2 images have a type of &amp;#039;dImg&amp;#039; and creator of &amp;#039;dCpy&amp;#039;, without these the program will not recognize the file; they can be easily added to images missing them with resedit.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+DC42 File format Overview&lt;br /&gt;
|-&lt;br /&gt;
!offset !! type/size !! contents&lt;br /&gt;
|-&lt;br /&gt;
|0x00||byte||Length of image name string (&amp;#039;Pascal name length&amp;#039;)&lt;br /&gt;
|-&lt;br /&gt;
|0x01-0x3F||63 bytes||Image name, in ascii, padded with NULs&lt;br /&gt;
|-&lt;br /&gt;
|0x40-0x43||BE_UINT32||Data size in bytes (of block starting at 0x54)&lt;br /&gt;
|-&lt;br /&gt;
|0x44-0x47||BE_UINT32||Tag size in bytes (of block starting after end of Data block)&lt;br /&gt;
|-&lt;br /&gt;
|0x48-0x4B||BE_UINT32||Data Checksum&lt;br /&gt;
|-&lt;br /&gt;
|0x4C-0x4F||BE_UINT32||Tag Checksum&lt;br /&gt;
|-&lt;br /&gt;
|0x50||byte||Disk encoding&lt;br /&gt;
|-&lt;br /&gt;
|0x51||byte||Format Byte&lt;br /&gt;
|-&lt;br /&gt;
|0x52-0x53||BE_UINT16||&amp;#039;0x01 0x00&amp;#039; (&amp;#039;Private Word&amp;#039;) AKA Magic Number&lt;br /&gt;
|-&lt;br /&gt;
|0x54-...||variable||Image data&lt;br /&gt;
|-&lt;br /&gt;
|...-EOF||variable||Tag data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specifics of data fork sections ==&lt;br /&gt;
=== 0x00: Length of image name string ===&lt;br /&gt;
Technically this is part of the 0x01-0x3f area, as pascal strings apparently store their length as their first byte. Effectively the address of the last non-NUL byte of the image name. bytes after the end address are ignored, and sometimes are used to hold extra information, or hold garbage (in the case of the 1.44mb system 6.0.8 startup disk, this is leftovers in memory from the System Additions disk, so the string ends up being System Startupns)&lt;br /&gt;
* Note: A special (bug) case happens when the disk name is &amp;quot;-not a Macintosh disk&amp;quot;, which the name is set to when using dc42 on non-mac diskettes. In that case, the length is set one byte too high; this is probably a bug in dc42 that was just never fixed.&lt;br /&gt;
&lt;br /&gt;
=== 0x01-0x3F: Image name ===&lt;br /&gt;
This is the image name string. It is copied from the volume name of the disk or diskette being imaged.&lt;br /&gt;
&lt;br /&gt;
=== 0x40-0x43: Data block size in bytes ===&lt;br /&gt;
This has one of 4 values on most diskettes:&lt;br /&gt;
 00 06 40 00 (409600 bytes) for 400k GCR disks&lt;br /&gt;
 00 0c 80 00 (819200 bytes) for 800k GCR disks&lt;br /&gt;
 00 0b 40 00 (737280 bytes) for 720k MFM disks&lt;br /&gt;
 00 16 80 00 (1474560 bytes) for 1440k MFM disks&lt;br /&gt;
&lt;br /&gt;
=== 0x44-0x47: Tag size in bytes ===&lt;br /&gt;
This is typically 12 bytes for every 512 bytes in the image, apparently stored in the data mark in each sector on the media. The format for Tag data is described at the bottom of the document, and is important for repairing damaged disks using disk doctor. It is also very important on Lisa Diskettes (according to LisaEM source).&lt;br /&gt;
 00 00 25 80 (9600 bytes) for 400k disks w/tags&lt;br /&gt;
 00 00 4b 00 (19200 bytes) for 800k disks w/tags&lt;br /&gt;
 00 00 00 00 for diskettes with no tags&lt;br /&gt;
&lt;br /&gt;
=== 0x48-0x4B: Data Checksum ===&lt;br /&gt;
The algorithm for this is: start with 00000000, add each consecutive 16 bit Big Endian word of the section, then rotate the 32 bit result right by 1 bit.&lt;br /&gt;
&lt;br /&gt;
=== 0x4c-0x4F: Tag Checksum ===&lt;br /&gt;
The algorithm for this is the same as for the data, however the first 12 bytes of the tag section, if present, are skipped (probably due to a bug in an older disk copy version and kept for compatibility).&lt;br /&gt;
* Tag Checksum is 00 00 00 00 if no tag data is present.&lt;br /&gt;
&lt;br /&gt;
=== 0x50: Disk encoding ===&lt;br /&gt;
This byte describes the encoding used for the disk the data was imaged from, from a &amp;#039;what type of disk is this?&amp;#039; perspective.&lt;br /&gt;
 00 = GCR CLV ssdd (400k)&lt;br /&gt;
 01 = GCR CLV dsdd (800k)&lt;br /&gt;
 02 = MFM CAV dsdd (720k)&lt;br /&gt;
 03 = MFM CAV dshd (1440k)&lt;br /&gt;
 Other encodings may exist, as DC42 was originally designed to be able to image HD20 disks.&lt;br /&gt;
&lt;br /&gt;
=== 0x51: Format Byte ===&lt;br /&gt;
This byte has one of two meanings, depending on whether the disk is GCR format 400k or 800k, or MFM format. The byte is completely ignored for the rare GCR-on-HD format (which always has a 1:1 interleave and is always 2 sided).&lt;br /&gt;
* If disk is GCR format 400k or 800k:&lt;br /&gt;
 This byte is a copy of the GCR format nybble (6 bits),&lt;br /&gt;
 which appears in the headers of every GCR sector.&lt;br /&gt;
 $02 = Mac 400k&lt;br /&gt;
 $12 = (documentation error claims this is for mac 400k disks, but this is wrong)&lt;br /&gt;
 $22 = Disk formatted as Mac 800k&lt;br /&gt;
 $24 = Disk formatted as Prodos 800k (AppleIIgs format)&lt;br /&gt;
 $96 = INVALID (Disk was misformatted or had GCR 0-fill (0x96 which represents data of 0x00)&lt;br /&gt;
 written to its format byte)&lt;br /&gt;
  Values for bitfield:&lt;br /&gt;
  76543210&lt;br /&gt;
  ||||||||&lt;br /&gt;
  |||\\\\\- These 5 bits are sector interleave factor:&lt;br /&gt;
  |||            setting of 02 means 2:1 interleave: 0  8  1 9  2 10 3 11 4 12 5  13 6  14 7  15&lt;br /&gt;
  |||            setting of 04 means 4:1 interleave: 0  4  8 12 1 5  9 13 2 6  10 14 3  7  11 15&lt;br /&gt;
  ||\------ This bit indicates whether a disk is 2 sided or not. 0 = 1 sided, 1 = 2 sided.&lt;br /&gt;
  \\------- always 0, as GCR nybbles are only 6 bits&lt;br /&gt;
*If disk is MFM format:&lt;br /&gt;
 This byte is used to define MFM sector size and whether the disk is&lt;br /&gt;
 two sided or not.&lt;br /&gt;
 Interleave is ALWAYS 1:1 for these formats.&lt;br /&gt;
 $22 = double-sided MFM diskettes with 512 byte sectors&lt;br /&gt;
  Values for bitfield:&lt;br /&gt;
  76543210&lt;br /&gt;
  ||||||||&lt;br /&gt;
  |||\\\\\- These 5 bits are sector size as a multiple of 256 bytes&lt;br /&gt;
  |||       i.e. 02 = 2*256 = 512 bytes per sector&lt;br /&gt;
  ||\------ This bit indicates whether a disk is 2 sided or not. 0 = 1 sided, 1 = 2 sided.&lt;br /&gt;
  \\------- unused, always 0&lt;br /&gt;
&lt;br /&gt;
=== 0x52-0x53: Private Word/Magic Number ===&lt;br /&gt;
This is more or less the &amp;#039;magic number&amp;#039; of any DC42 format file; if it is not $01 $00, it is not a DC42 format file.&lt;br /&gt;
&lt;br /&gt;
=== 0x54-...: Image data ===&lt;br /&gt;
The size in bytes of the data stored here is the value at 0x40-0x43.&lt;br /&gt;
&lt;br /&gt;
=== ...-EOF: Tag data ===&lt;br /&gt;
The size in bytes of the data stored here is the value at 0x44-0x47.&lt;br /&gt;
&lt;br /&gt;
== Tag Data format ==&lt;br /&gt;
The tag data is 12 bytes per 512-byte disk sector, and is stored, like the Image data, in sector order.&lt;br /&gt;
The actual format for each 12-byte block of the Tag data differs for Lisa, MFS and HFS disks,&lt;br /&gt;
and for MFS or HFS any of them may be wrong or absent! be warned!&lt;br /&gt;
* The Tag format for Lisa 400k or 800k disks is currently unknown, but without tags the disks will not function.&lt;br /&gt;
*For MFS filesystems the Tag format is as follows:&lt;br /&gt;
 BE WARNED: when reading tag data, if the bit at 00 40 00 00 of any of the 3 32 bit words of the tag is set, the tag&lt;br /&gt;
  data for the sector it is part of is trashed and can be ignored. There IS a puprose to the data written when 0x40 is set, I&amp;#039;m just not sure what it is.&lt;br /&gt;
 offset	    type/size	 contents&lt;br /&gt;
 0x00       BE_UINT32    File number on disk, within MFS filesystem&lt;br /&gt;
 0x04       BE_UINT16    Flags bitfield:&lt;br /&gt;
           FEDCBA98 76543210&lt;br /&gt;
           |||||||| ||||||||&lt;br /&gt;
           |||||||| |||\\\\\- unknown, seems unused&lt;br /&gt;
           |||||||| ||\------ If set, Tag for this sector is not valid.&lt;br /&gt;
           |||||||| \\------- unknown&lt;br /&gt;
           |||||||\---------- sector content type: 0: system file; 1: user file (guessed)&lt;br /&gt;
           ||||||\----------- sector is part of a: 0: data fork; 1: resource fork&lt;br /&gt;
           |\\\\\------------ unknown&lt;br /&gt;
           \----------------- unknown, sometimes set on the last few sectors of a data or resource fork&lt;br /&gt;
 0x06       BE_UINT16    Logical block number within the file&lt;br /&gt;
 0x08       BE_UINT32    Time of last modification, in seconds since 0:00:00, 1/1/1904&lt;br /&gt;
 Note that the last mod time may be different on the final sector of a file; this may indicate something special.&lt;/div&gt;</summary>
		<author><name>Philpem</name></author>	</entry>

	</feed>