0

I formatted several 5.25" diskettes with 360k and 1.2M on the Windows XP PC using 1.2M (HD) drive. I am using the same drive to read data from 360k diskette back using custom driver. The controller returns "address mark not found". Here's what I send to controller:

46 00 00 00 01 02 01 2A FF

and here's what I get in response

40 01 00 00 00 01 02

The FDC speed set is 250 kb/s (CR1=1, CR0=0). The same custom driver works properly with 3.5" drives' 1.44M and 720k formats, and with 5.25" drive's 1.2M format, only 360k is having problems.

I have problems finding information on how to support older 360k formats on newer drives. My assumption was that I just *2 track number, at least it must yield correct reading of data. But here driver is unable to read even sector 1 at head 0 track 0 (boot sector) to identify the geometry.

I suspect there must be something else, but I can not figure out what it might be.

(Not sure if EE is correct place to put this question to; however stackoverflow [programming] seems to be less proper, serverfault is also non-fit. Question is too low level and must be related to how electronics/architecture works).

3
  • This might be a better question for Superuser.
    – The Photon
    Apr 24, 2020 at 20:37
  • 4
    Or retro computing.
    – pjc50
    Apr 24, 2020 at 20:41
  • 2
    I agree, this would be waaaaaay better off in retrocomputing.SE Apr 24, 2020 at 20:46

2 Answers 2

4

Writing a 360k floppy with a 1.2M drive is never going to be reliable. And that includes formatting it.

Because a 1.2M drive is intended to write disks with a narrower track width, the head is smaller. If you're reading an old 360K disk, that's not a problem. Place the head anywhere within the wider track, and it will read the data.

But when you write a track - including formatting the disk - you are only writing over part of the track. The remainder could have anything on it - including the old data on the disk. So when you read it back again, you get some mix of the old and new data.

1
  • I formatted diskette with the same drive, not the old 360kb drive. This makes difference. Same drive must read data it wrote before.
    – Anonymous
    Apr 24, 2020 at 21:40
1

Problem solved by reading this information. 1.2M drive rotates 360 RPM, and requires 300 kb/s transfer speed, not 250 kb/s, to be up to speed with the data (300/250 equals to 360/300). For older 360k driver 250 kb/s speed must be selected. That's why there were always 5.25" 1.2M and 5.25" 360k drives in the computer setup, not just 5.25" drive type.

Now drive can read track 0, but not other tracks.

3
  • 1
    Is it double-stepping on the other tracks? ie. if you try to read track 39, do the heads go to the innermost track? Apr 24, 2020 at 21:48
  • Yes, it does. For LBA 0x2cf (9*2*40-1) it goes to the innermost position.
    – Anonymous
    Apr 24, 2020 at 21:54
  • Ok, it works now, system boots to DOS as expected.
    – Anonymous
    Apr 24, 2020 at 22:10

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .