...This gives the indication to me, that I have to split my MFM decoder in two areas, the 1) Servo/header and the 2) data area. Part 2) is done and works, but part 1) may go very difficulty.
I suppose this would be one way to accomplish it, but I think you might consider a simpler approach.
The thing that appears missing from the design at this point is the notion of Byte "SYNC" on the decoded MFM data, as well as imposing a LOSS of SYNC at a known place in the end of the HEADER before the DATA Preamble.
It appears to me that you can add a single stage which waits for the "1" at the end of the PReamble(s), before outputting correctly framed data 8 bits at a time.
This should correctly "FRAME" the HEADER bits you've had so much trouble with.
The size of the HEADER needs to be to measured so that when the final bit of the CRC is received, you must intentionally "UN-SYNC" the stage for 32 bits. This provides a means of "skipping over" the intersession gap between the end of the HEADER and the beginning of the DATA".
What do you think about the following idea: Remove the EPROM 2708, E8 on a RLV11/M8013, read the contents and import the data in the FPGA world ? I think the secret is in this EPROM based on the flow chart info in the RLV-11 engineering drawings. I am thinking about this, because I got the message yesterday, that the computer museum in Munich could find RLV-11 ( M8012,M8013 ) boards.
Are you thinking you need to process the SERVO data to be able to read the header correctly?
I don't think you need to do this at all. Ignore the SERVO data entirely. By "Gating Off" the MFM data during the inter-SECTOR pulse, you are already accomplishing this.
The reason you have not gotten your headers read consistently is that you are not SYNCing on the end of the PReamble, so the bits are not being FRAMED correctly into 8 [or 16] bit words.
Concerning your last post:
Generally, a question arises to me: Should I investigate more effort in the RL02 simulator or should I switch over to a MFM ST-506 style disk simulator, working together with you ? The realization would be much more simpler. I have an up and running DEC professional 350 and my special PDP11/23 with Q-BUS/CTI-Bus converter, also with an attached RD51 is available. The ST506 interface is running at 5Mhz and don't need the exotic 75107 and 75113 bus chips running with +/- 5 volt.
I think you're hot on the RL02. If I were you, I would stay with this until you kick it's ass totally!
My environment: I have an up and running RL02 disk drive available, tested with XXDp and bootable RT-11 system , Macro-11, Fortran and Basic on it.
3 Cartriges are available, one is not usable. Reason: May be you can reminder about the problem with the magnetized RL02 heads which did result in a minified Servo/Header signal. This cartridge seems to be infected by this symptom. Reformat is not possible in the contrast to a ST-506 style disk.
Ok, this tells me that you know which cartridges to trust, and which not to. Unless you suspect something has changed there is no need to do my previous suggestion "
1)".
My 2 development boards, connected to a MAXII and a CYCLONII as well my cable environment is working fine an I see no reason to verify it again.
If you are confident, then there is no need to do my previous suggestion "
2)".
Concerning Simulation: From my point of view far too much overhead and investigation would be necessary...
You are the boss!
However, I might point out that your final device, emulating an RL drive well enough to fool a RLV1x controller and software system
IS a SIMULATOR of sorts. It's just not taylored for your needs now.
One final observation:
In defense of my suggestions...
RL02 Cartridge FORMAT is written in at
least 3 Separate "SESSIONS". This is the reason there are gaps between the SERVO, HEADER, and DATA portions of a SECTOR.
- SERVO data is written as the first stage in bringing an RL disk to life. This can only be done by DEC at the factory because the RL drive does not have the ability to create this data, only to use it. Think what you like about the "Approach" of "SERVO in DATA", but it was a big advance for the time, and reduced the cost, complexity, and unreliability of disks in it's era.
- As soon as the DISK is USED to contain real data, that DATA is written down in yet another session.
This is why the HEADER must be separated from the DATA on read, - it was not written at the same time and therefore could not possibly be laid down with enough accuracy to prevent illegal timing intervals.
"Byte SYNCing" FRAMES with the PREAMBLEs solves the problem for both HEADER and DATA segments of the sector.