On Sun, Sep 10, 2017 at 03:07:27AM -0700, Fritz Chwolka wrote:
>
> 1. "controllers for the system " do you mean the MFM-Emulator hardware (I
> have several) or the MFM-Controller of the old computer?
>
The controller in the old computer. The only way you would know would be
to read the disk with the MFM emulator or use mfm_util on an emulator file.
> 2. "begin_time".. with this I have to look into your documents and hope I
> understand a little bit. Please explain the "begin_time" for a novice like
> me.
>
Its a command line option.
http://www.pdp8online.com/mfm/code/mfm/mfm_read_util_doc.html
If you read a drive with mfm_read --analyze it will print the value in
option list when it prints "Command line to read disk:"
When reading a disk it reads the transitions from index pulse to index
pulse. If a index pulse occurs in the middle of a sector it then can't
decode it. Begin time shifts the actual start and end of reading by that
time interval so it happens in the fill data between sectors. Index pulse
is a signal that goes active one per revolution of the disk. Most
controllers when formatting the disk wait for the index pulse then
start writing from the first sector. Some controllers seem to be really
slow getting to writing the first sector so the last sector straddles
the index pulse.
The one ICL computer I have information on uses the Xebec S1410 which
needs non zero begin time. Other models may use different controllers which
don't need it.
The system I tried mfm_write with uses 0 begin time so non zero
may never have been tested, I was just saying if one of the two systems
you had to test with used non zero begin time that would be a better
test.
You can also test by making an emulator file that uses begin time, writing
to a drive, and reading it back. Since Xebec isn't currently supported by
ext2emu you can test using northstar format.
Create a file with 16*heads*cylinders. For this example 4 heads and 100 cyl.
Adjust as needed for your drive
dd if=/dev/zero of=/tmp/zeros bs=512c count=6400
ext2emu --emu /tmp/emu --ext /tmp/zeros --cyl 100 --heads 4 --format NorthStar_Advantage
Then use mfm_write to write /tmp/emu to a drive and then use mfm_read to read
it.
You need to look up the drive and see what cylinder is recommended for
write precompensation and edit line in mfm_write.c. Unless you have
more information leave the precom_ns values as is.
Also see
http://www.pdp8online.com/mfm/code/mfm/mfm_write_doc.html
for change needed to mfm_read-00A0.dts. Will need to reboot each time
the file is changed. Will need to be changed back to read. Also write
jumper needs to be installed for write and best to remove it for reading.
mfm_write --emu /tmp/emu
mfm_read --ana --ext /tmp/t
Should get something like
Command line to read disk:
--sectors 16,0 --heads 4 --cylinders 100 --header_crc 0x0,0x0,16,0 --data_crc 0x0,0x0,32,0 --format NorthStar_Advantage --sector_length 512 --retries 50,4 --drive 0 --begin_time 230000
And the disk reads with only the number of errors expected from the bad
sectors on the disk.