Floppy Disk Data Separator

A forum about Atari protected floppy disks analysis, preservation, emulation, tools

Moderators: DrCoolZic, Brume

User avatar
DrCoolZic
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2144
Joined: Mon Oct 03, 2005 7:03 pm
Location: France
Contact:

Floppy Disk Data Separator

Postby DrCoolZic » Thu Sep 03, 2015 3:50 pm

I have been using a data separator in Aufit based on the DPLL described in patent US4780844 (http://info-coach.fr/atari/documents/ge ... 780844.pdf ).

Recently it has been brought to my attention that sometimes the fuzzy bits pattern of Dungeon Master / Chaos Strike Back were incorrectly decoded by Aufit. Basically these fuzzy bytes are produced by slowing moving one bit from the pattern 1011 to the pattern 1101 (for more information please read the patent http://info-coach.fr/atari/documents/ge ... 849836.pdf ). The phase compensation part of the DPLL try to move the sliding bit back to normal position and this result sometimes to an over compensation resulting in shifting the bit by one extra position. If I decrease the phase compensation parameter I can detect correctly the DM/CSB bytes but I do not decode correctly some Rob Northern Copylock protections. The problem is not dramatic and I have a working version of Aufit but the solution is not clean. I am therefore still tweaking my current implementation, but since I have looked at some other DPLL patent that uses what seems to be even cleverer algorithms.

I have also looked at the DPLL code used in StemSSE and HxC but unfortunately none of these codes are explicitly documented and none of these codes compile successfully under latest version of Microsoft Visual Studio. It is therefore difficult to analyze how they work.

I am wondering if there is any interest to start a public domain mini project that implement a state of the data separator. For that matter I have written a short document that describe some initial requirements, background information, and a synopsis of the targeted data separator.
This document is attached here.
Disk Data Separator-v0.1.rar


I would like to know if there is any interest in this kind of project and if people are willing to participate in implementing the code?
So please report if you are interested.
You do not have the required permissions to view the files attached to this post.

JimDrew
Atari Super Hero
Atari Super Hero
Posts: 638
Joined: Mon Nov 04, 2013 5:23 pm

Re: Floppy Disk Data Separator

Postby JimDrew » Fri Sep 04, 2015 12:02 am

I am not a C programmer, but I would be happy to help. I know how data separators work in the CBM disk drives (1541, 1571, etc.) and I also know the internal workings of the Amiga's data separator contained within the PAULA chip. Notice that I support converting from flux to CBM GCR and flux to Amiga decoded data. :)

I think your DPLL is working fine in Aufit, but I believe that your state machine that emulates the WD1772 is what is off. Have you looked at the WD1772 emulation in MAME?
I am the flux ninja

Jeff_HxC2001
Captain Atari
Captain Atari
Posts: 309
Joined: Fri Sep 21, 2007 7:35 pm
Location: Paris - France
Contact:

Re: Floppy Disk Data Separator

Postby Jeff_HxC2001 » Fri Sep 04, 2015 6:36 am

Nothing is a secret/rocket science here. You can find tons of informations about Data Separator on the Internet.

Have a look to this :

http://hxc2001.com/download/datasheet/f ... party/FDC/

http://hxc2001.com/download/datasheet/f ... Manual.pdf

http://hxc2001.com/download/datasheet/f ... esigns.pdf

http://hxc2001.com/download/datasheet/f ... Separator/


Note : The latest Microsoft Visual Studio versions are NOT designed to make C program. Don't be surprise if you got some problems with them.
This is not C99 compliant, the thing produce imcompatible binaries for previous versions of Windows (A pure planned obsolescence..., how this can be justified with a simple "Hello World" program ?!?), and all these ms "secure" stdio library is just help you to make your code non-portable.

User avatar
DrCoolZic
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2144
Joined: Mon Oct 03, 2005 7:03 pm
Location: France
Contact:

Re: Floppy Disk Data Separator

Postby DrCoolZic » Fri Sep 04, 2015 7:27 am

JimDrew wrote:I am not a C programmer, but I would be happy to help. I know how data separators work in the CBM disk drives (1541, 1571, etc.) and I also know the internal workings of the Amiga's data separator contained within the PAULA chip. Notice that I support converting from flux to CBM GCR and flux to Amiga decoded data. :)

I think your DPLL is working fine in Aufit, but I believe that your state machine that emulates the WD1772 is what is off. Have you looked at the WD1772 emulation in MAME?

No problem is in the DPLL :(
US4780844 has freq correction using history but the phase correction has no history. As DM/CSB have HHHHHUGE bit drift the algorithm seems to overcompensate in some situation shifting the bit back too far ...
So I am trying to combine US4780844 with US4808844
will see

User avatar
DrCoolZic
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2144
Joined: Mon Oct 03, 2005 7:03 pm
Location: France
Contact:

Re: Floppy Disk Data Separator

Postby DrCoolZic » Fri Sep 04, 2015 8:36 am

Jeff_HxC2001 wrote:Nothing is a secret/rocket science here. You can find tons of informations about Data Separator on the Internet.

Have a look to this :

http://hxc2001.com/download/datasheet/f ... party/FDC/

http://hxc2001.com/download/datasheet/f ... Manual.pdf

http://hxc2001.com/download/datasheet/f ... esigns.pdf

http://hxc2001.com/download/datasheet/f ... Separator/


Note : The latest Microsoft Visual Studio versions are NOT designed to make C program. Don't be surprise if you got some problems with them.
This is not C99 compliant, the thing produce imcompatible binaries for previous versions of Windows (A pure planned obsolescence..., how this can be justified with a simple "Hello World" program ?!?), and all these ms "secure" stdio library is just help you to make your code non-portable.


Well first thanks for the pointers. Interesting information. I see that we already have a lot of documents in common (see http://info-coach.fr/atari/hardware/FD-Hard.php#links)
But all documents are HW descriptions.
I do not agree that doing a "perfect/good" separator is such an easy task. Otherwise why so many patents would have been written on the subject.


Apart from Atari development I have not used C for the past 10-20 years. So I did not try to compile any large piece of C in VS and therefore I cannot really comment why your code does not compile :shrug:

This makes me wander why people are still using C language today? For fun I have done some searchs (try C versus C++ in google). Open-source project comes as the first argument for no good reasons (aprt from C++ being harder to learn?!). See for example Dr Dobb's answer http://www.drdobbs.com/cpp/why-code-in- ... /240149452. According to the article using c99/c11 features put you in high risk for portability.

I guess I am biased because long ago I have dedicated some of my time to help in the definition of C++ in ISO committee to provide a better than C language ... :oops:

According to MS VS2015 support C99 apart from tgmath.h and some macro features
https://msdn.microsoft.com/fr-fr/librar ... 2147217396
http://blogs.msdn.com/b/vcblog/archive/ ... ageIndex=2

According to MS VS2015 support platforms down to Windows XP (but not below 8O ) except no support for remote debugging
https://www.visualstudio.com/en-us/prod ... ty-vs.aspx

User avatar
Steven Seagal
Atari God
Atari God
Posts: 1982
Joined: Sun Dec 04, 2005 9:12 am
Location: Undisclosed
Contact:

Re: Floppy Disk Data Separator

Postby Steven Seagal » Sat Sep 05, 2015 9:43 am

I can't support a VS2015 build of Steem for the moment but frankly I don't see why it should be impossible if VS2008 works...
If it's just for WD1772 emulation, you may even disable the D3D compile switch.

Or maybe compile MAME, after all it's the source?

Note that DPLL is different from data separator in Steem code.
The first was vaguely inspired by MESS/MAME project, the second by CAPS/SPS.
DPLL gets bit sequence, separator gets data and address marks from the sequence.

floppy -> DPLL -> data separator -> DR

User avatar
DrCoolZic
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2144
Joined: Mon Oct 03, 2005 7:03 pm
Location: France
Contact:

Re: Floppy Disk Data Separator

Postby DrCoolZic » Sun Sep 06, 2015 8:10 am

Steven Seagal wrote:I can't support a VS2015 build of Steem for the moment but frankly I don't see why it should be impossible if VS2008 works...
If it's just for WD1772 emulation, you may even disable the D3D compile switch.

Or maybe compile MAME, after all it's the source?

Note that DPLL is different from data separator in Steem code.
The first was vaguely inspired by MESS/MAME project, the second by CAPS/SPS.
DPLL gets bit sequence, separator gets data and address marks from the sequence.

floppy -> DPLL -> data separator -> DR

Thanks I am travelling today and will look at that when I return in 10 days
Hum I would have thought that caps/sps code is more the deserializer ?

User avatar
DrCoolZic
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2144
Joined: Mon Oct 03, 2005 7:03 pm
Location: France
Contact:

Re: Floppy Disk Data Separator

Postby DrCoolZic » Wed Sep 16, 2015 9:39 am

OK I have downloaded the latest steemsse sources with TortoiseSVN from code/trunk/steemsse

in SSE.H line 2136 I have changed SSE_VID_DIRECT3D to SSE_VID_DIRECT3D_XX
in infobox.cpp line 378 I removed __TIME__ (does not exist in VS2015)
in stemdos.decla.h line 4 added #include "dirsearch.h"
in linker input I removed d3dx9d.lib

now I can build :)
when I start the program I am getting 1-4 BOMBS but it seems to work ...
So looks like good enough for my tests


Social Media

     

Return to “Floppy Disk Preservation”

Who is online

Users browsing this forum: No registered users and 1 guest