dgesswein / mfm

MFM emulator code
GNU General Public License v3.0
50 stars 11 forks source link

Recreating a EMU file from the extracted IMG with OMTI_5010 does not create an EMU with the correct number of sectors per track #46

Closed misterblack1 closed 5 months ago

misterblack1 commented 5 months ago

Extracted EMU file works perfectly with the real machine. Analyzing the EMU file, notice it has 18 sectors per track:

root@beaglebone:~/ki3v/mfm/mfm# ./mfm_util --analyze -m ~/plexus-sanitized.emu
Original decode arguments: --format OMTI_5510 --sectors 18,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --retries 90,6 --drive 1
Matches count 36 for controller OMTI_5510
Header CRC: Polynomial 0x104c981 length 32 initial value 0x2605fb9c
Sector length 512
Data CRC: Polynomial 0x104c981 length 32 initial value 0xd4d7ca20
Number of heads 11 number of sectors 18 first sector 0
Interleave (not checked): 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Command line to read disk:
--format OMTI_5510 --sectors 18,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --retries 90,6 --drive 1

As I test, I tried to turn the extracted image back into an EMU, but it does not work and creates a non working EMU file:

root@beaglebone:~/ki3v/mfm/mfm# ./ext2emu -m ~/plexus-reanimated.emu --format OMTI_5510 --heads 11 --cylinders 754 -e ~/plexus-sanitized.img
Calculated extract file size 72190976 bytes, actual size 76437504
At cyl 750

Analysis of the newly created EMU file:

./mfm_util --analyze -m ~/plexus-reanimated.emu
Original decode arguments: --format OMTI_5510 --sectors 17,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --track_words 5209
Found matching format OMTI_5510: good count difference 0
Number of heads 11 number of sectors 17 first sector 0
Interleave (not checked): 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Command line to read disk:
--format OMTI_5510 --sectors 17,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --retries 50,4 --drive 0 --track_words 5209

Notice it has 17 sectors per track. Analyzing the source code, the value of 17 is hardcoded. We tried altering the source code in a few spots that looked relevant, but it resulted in a broken conversion process.

dgesswein commented 5 months ago

Looks like there are 17 and 18 sector versions of the format. The gap lengths will need to be adjusted to make a 18 sector version.

Do you know what controller generated this format? Can you compress and upload a 18 sector emulator file to here so I can add a new format?

http://www.pdp8online.com/upload/abuploadab.html

On Tue, Jun 11, 2024 at 03:57:13PM -0700, misterblack1 wrote:

Extracted EMU file works perfectly with the real machine. Analyzing the EMU file, notice it has 18 sectors per track:

***@***.***:~/ki3v/mfm/mfm# ./mfm_util --analyze -m ~/plexus-sanitized.emu
Original decode arguments: --format OMTI_5510 --sectors 18,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --retries 90,6 --drive 1
Matches count 36 for controller OMTI_5510
Header CRC: Polynomial 0x104c981 length 32 initial value 0x2605fb9c
Sector length 512
Data CRC: Polynomial 0x104c981 length 32 initial value 0xd4d7ca20
Number of heads 11 number of sectors 18 first sector 0
Interleave (not checked): 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Command line to read disk:
--format OMTI_5510 --sectors 18,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --retries 90,6 --drive 1

As I test, I tried to turn the extracted image back into an EMU, but it does not work and creates a non working EMU file:

***@***.***:~/ki3v/mfm/mfm# ./ext2emu -m ~/plexus-reanimated.emu --format OMTI_5510 --heads 11 --cylinders 754 -e ~/plexus-sanitized.img
Calculated extract file size 72190976 bytes, actual size 76437504
At cyl 750

Analysis of the newly created EMU file:

./mfm_util --analyze -m ~/plexus-reanimated.emu
Original decode arguments: --format OMTI_5510 --sectors 17,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --track_words 5209
Found matching format OMTI_5510: good count difference 0
Number of heads 11 number of sectors 17 first sector 0
Interleave (not checked): 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Command line to read disk:
--format OMTI_5510 --sectors 17,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --retries 50,4 --drive 0 --track_words 5209

Notice it has 17 sectors per track. Analyzing the source code, the value of 17 is hardcoded. We tried altering the source code in a few spots that looked relevant, but it resulted in a broken conversion process.

-- Reply to this email directly or view it on GitHub: https://github.com/dgesswein/mfm/issues/46 You are receiving this because you are subscribed to this thread.

Message ID: @.***>

misterblack1 commented 5 months ago

The particular interposer is the OMTI 5200 with a Fujitsu M2243AS drive. (The The OMTI 5000 series but with two MFM drive and two Shugart floppy drive support) And yes, sorry I had already uploaded the EMU and IMG file to Archive.org, I should have shared the link: https://archive.org/details/plexus-sanitized.emu

Drive specs: https://github.com/misterblack1/plexus-p20/blob/main/docs/pdf/Fujitsu_M224X_Brochure_1984.pdf

dgesswein commented 5 months ago

New version released with format OMTI_5200_18sector_512B.

dgesswein commented 5 months ago

Have you had time to verify this worked for you? Impressive work on getting the plexus self test fault fixed.

misterblack1 commented 5 months ago

Heya, not yet. I was at VCF Southwest in Dallas for the past several days -- so now I'm home, once I recuperate a bit I will give this a try and report back. Thanks for the quick turnaround!

misterblack1 commented 5 months ago

EDIT: I see I used the wrong format, running again! Please ignore this failure....

Testing now:

root@beaglebone:~/fixed/mfm/mfm# ./ext2emu -m ~/plexus-reanimated-fixed.emu --format OMTI_5510 --heads 11 --cylinders 754 -e ~/plexus-sanitized.img
Calculated extract file size 72190976 bytes, actual size 76437504

and then...

root@beaglebone:~/fixed/mfm/mfm# ./mfm_util --analyze -m  ~/plexus-reanimated-fixed.emu
Original decode arguments: --format OMTI_5510 --sectors 17,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --track_words 5209
Found matching format OMTI_5510: good count difference 0
Found matching format OMTI_5200_18sector_512B: good count difference -1
Retrying on cylinder 0 head 1
Found matching format OMTI_5510: good count difference 0
Found matching format OMTI_5200_18sector_512B: good count difference -1
Multiple matching formats found, using best
Number of heads 11 number of sectors 17 first sector 0
Interleave (not checked): 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Command line to read disk:
--format OMTI_5510 --sectors 17,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --retries 50,4 --drive 0 --track_words 5209
root@beaglebone:~/fixed/mfm/mfm#

I'm not sure it worked -- it still says it only has sectors 0 through 16.

misterblack1 commented 5 months ago

OK I messed up with the command above, I put the wrong format. Using the new 18 sector format created an EMU file that looks correct! Woot. About to try in the real machine:

root@beaglebone:~/fixed/mfm/mfm# ./mfm_util --analyze -m  ~/plexus-reanimated-fixed.emu                 Original decode arguments: --format OMTI_5200_18sector_512B --sectors 18,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --track_words 5209
Found matching format OMTI_5200_18sector_512B: good count difference 0
Number of heads 11 number of sectors 18 first sector 0
Interleave (not checked): 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Command line to read disk:
--format OMTI_5200_18sector_512B --sectors 18,0 --heads 11 --cylinders 754 --header_crc 0x2605fb9c,0x104c981,32,6 --data_crc  0xd4d7ca20,0x104c981,32,6 --sector_length 512 --retries 50,4 --drive 0 --track_words 5209
misterblack1 commented 5 months ago

And we're up, this completely fixed it. Thanks! image