It is not becoming better. Both images seem to behave the same.
I can read up to sector 44 (which is on cylinder 1) and then the first error occurs when seeking back to sector 0.
In order to investigate more, I have modified my BASIC program further to retry reading using the ON ERROR statement.
This allows me to continue after an error for testing purposes.
Unfortunately I cannot change the error handling of the operating system. The System surely has its own retry mechanism as I can see that it recalibrates and retries on bad floppy disks (usually there are up to 10 retries). But I do not have the ROM code of the HP-86A to investigate.
Algorithm:
Code: Select all
FOR N=0 TO 2*16*35-1
{
display "target sector N"
try
{
read sector 0
}
catch ERROR
{
display "Error on seek to 0"
retry read sector 0 up to 5 times
}
try
{
read sector N
}
catch ERROR
{
display"Error on seek to N"
retry read sector N up to 5 times
}
}
All errors occur when trying to read sector 0, i.e. in the first error clause of the loop.
Due to my error handling, the sector can always be read on the second try.
The corresponding sector numbers are irregular, no clear pattern.
Interestingly the distance between the errors after the previous one is always a multiple of 8.
Table with 3 columns:
N = sector when read sector 0 error occurs
DIFF = difference in sectors between previous error and this one
Code: Select all
N DIFF How many multiples of 8
44 - -
52 8 1
60 8 1
76 16 2
108 32 4
124 16 2
132 8 1
156 24 3
164 8 1
172 8 1
180 8 1
212 32 4
220 8 1
228 8 1
260 32 4
268 8 1
276 8 1
284 8 1
308 24 3
316 8 1
332 16 2
340 8 1
348 8 1
356 8 1
364 8 1
372 8 1
396 24 3
420 24 3
436 16 2
444 8 1
452 8 1
460 8 1
484 24 3
508 24 3
516 8 1
548 32 4
556 8 1
580 24 3
588 8 1
620 32 4
636 16 2
676 40 5
692 16 2
748 56 7
756 8 1
780 24 3
788 8 1
804 16 2
and so on
sectors are numbered from 0
each cylinder has 2x16=32 sectors
there are 35 cylinders