Hello !
I recently build myself a full rev C mfm_emulator which seems to run fine, amazing stuff I must say, great use of the pru !
I would like to use it on an upgraded Acorn A310 with 4Mb RAM & Computerware st-506 "podule", my final goal is to run RiscIX, a little known official commercial 4.3BSD port to the Archimedes. I am a kind of weird Unices freak, it will be a great addition to a Commodore Amiga 3000 running Amix and an Atari TT running Atari Unix. For those that may not know the Archimedes, it was the machine for which the ARM processor was created, and the first commercial machine using one !
I initially tried dumping the poor Seagate ST-151 that was in the machine. I had to force the motor spinning with a q-tip, could dump it but the hd was then dead.
A friend then lent me a perfectly working Nec D5146H. I first dumped its contents :
./mfm_read --analyze --emulation_file ../nec-d5146h/test1.emu --extracted_data_file ../nec-d5146h/test1.data
Board revision C detected
Found drive at select 1
Drive RPM 3596.0
Matches count 34 for controller WD_1006
Header CRC: Polynomial 0x1021 length 16 initial value 0xffff
Sector length 512
Data CRC: Polynomial 0x140a0445 length 32 initial value 0xffffffff
Selected head 8 found 0, last good head found 7
Read errors trying to determine sector numbering, results may be in error
Number of heads 8 number of sectors 17 first sector 1
Interleave (not checked): 1 7 13 2 8 14 3 9 15 4 10 16 5 11 17 6 12
Drive supports buffered seeks (ST412)
Found cylinder 103 expected 615
No sectors readable from cylinder 616
Stopping end of disk search due to two unreadable tracks in a row
Number of cylinders 615, 42.8 MB
Command line to read disk:
--format WD_1006 --sectors 17,1 --heads 8 --cylinders 615 --header_crc 0xffff,0x1021,16,0 --data_crc 0xffffffff,0x140a0445,32,8 --sector_length 512 --retries 50,4 --drive 1
Found cyl 0 to 614, head 0 to 7, sector 1 to 17
Expected 83640 sectors got 83640 good sectors, 0 bad header, 0 bad data
0 sectors marked bad or spare
0 sectors corrected with ECC. Max bits in burst corrected 0
Track read time in ms min 23.979250 max 1807.148042 avg 35.361037
Worked fine, the disk came from an DOS machine, partitions are all ok and dump seems fine.
I then plugged the hd into my Archimedes, ran !hform and formated the Nec hd, all went well. I copied a few files and plugged it back to the mfm_emulator for a new dump. I tried the following :
./mfm_read --analyze --emulation_file ../nec-d5146h/archie-analyze.emu --extracted_data_file ../nec-d5146h/archie-analyze.data
Board revision C detected
Found drive at select 1
Drive RPM 3596.4
Retrying on cylinder 0 head 1
Unable to determine drive format
and
./mfm_read --analyze=615,8 --emulation_file ../nec-d5146h/archie-analyze.emu --extracted_data_file ../nec-d5146h/archie-analyze.data
Board revision C detected
Found drive at select 1
Drive RPM 3596.4
Retrying on cylinder 0 head 1
Unable to determine drive format
No success.
I then tried :
./mfm_read --emulation_file ../nec-d5146h/archie-no-analyze.emu --cylinders 615 --heads 8 --drive 1
Board revision C detected
Track read time in ms min 19.210084 max 1928.078792 avg 34.850160
And voilà, a working emu file.
I then plugged the mfm_emulator to the Archimedes, started mfm_emu emulating the previous emu file, and everything works OK !
Now the part I do not understand. I wanted to try emulating a bigger disk. 1023 cylinders and 8 heads seem to be the biggest supported, so I tried emulating newly created images using mfm_emu "initialize" option. Those new images are unusable. !hform, the formatting tool, reports errors at every cylinder. I did try various cylinders/heads combos, mimicking known harddisks, even created one in the same config as the Nec drive, but it does not work.
I unfortunately am more experienced with scsi setups and more modern stuff, but I feel it seems not far from being doable.
I suppose a new format should be added to the tool ? Would it solve both the extracted_data_file issue & the unusable initialized images ? Or are these two different things ?
The st-506 "podule" (interface) is based on the Hitachi HD63463 controller, its datasheet can be found here, there some infos about CRC :
Is there enough info to add a new format ? I have some coding experience, but not that low level ... I'd love to learn more but this seems a HUGE topic ...
Details about the Nec HD :
Anyway thanks a lot for the great product, ans thanks for helping !!
Marcel