On Tue, Dec 6, 2016 at 2:02 AM, Christian Corti <c...@informatik.uni-stuttgart.de> wrote: > On Mon, 5 Dec 2016, Glen Slick wrote: >> >> I tried using ImageDisk on a PC to read the two HP 1630 3.5-inch >> floppies I have (10304 8085 preprocessor, 10342 HP-IB, RS-232C/V.24, >> RS-449 preprocessor). It appeared to be able to read the expected data >> just fine. Singled sided disk with 16 256-byte sectors per track >> (sector numbers 0 - 15) and 70 tracks. >> >> But it also seemed to detect a sector number 17 with no data in each >> track. Is that a normal 9121 low level format? I haven't tried to >> write a floppy back out using ImageDisk to see if the result is >> readable on a 9121 drive. > > > Funny that you mention that. I just came across that anomaly yesterday when > I tried to create some disks for the HP150 with 9121 drive; the images are > from the hpmuseum site and are in TeleDisk format. > I had a lot of trouble writing the images back. I wanted to use ImageDisk > instead and tried the TD02IMD tool, but it failed miserably with the error > "Cannot do mixed sector size within track", even with the option M=15 that > should truncate every track after sector number 15. > I found out that a disk formatted in the 9121 has 16 normal sectors > (numbered from 0 to 15) with 256 bytes each (size code 1), and one extra > sector numbered 17 (there's no sector 16) with size code 5. > The solution to TD02IMD was to move the call of remove_sectors() *before* > the three issame() calls. remove_sectors() is responsible to remove the > unwanted sectors greater that 15 with option M=15. With that bugfix TD02IMD > produces a correct IMD file that can be written back without problems, and > the 9121 drive is very happy with that floppy :-) > > Christian
That reminded me I ran into this problem 4 years ago and sent this email to Dave at the time about it. I ended up rebuilding my own version from the IMD118 source code to fix the problem. ---------- Dave, I have some questions/suggestions about TD02IMD.COM In the main routine would it make sense to move the remove_sectors() call prior to where it does the mixed sector size check? For example, if the tracks of a disk contain 16 normal and same sized sectors and there is a 17th garbage sector in the Teledisk image with a different sector size, would it make sense to be able to use the M= command line option to filter out and remove sectors that cause image conversion failure? // Read each sector, buffer & build maps for(s=0; s < Thead.Tsectors; ++s) process_sector(); if(!issame(Smap, Size = Smap[0], Stop)) // 765 cannot do mixed sector sizes error("Cannot do mixed sector size within track"); if(!issame(Cmap, Cylinder, Stop)) // Cylinder map required Head |= 0x80; if(!issame(Hmap, Head & 0x0F, Stop)) // Head map required Head |= 0x40; // Remove sectors as requested remove_sectors(); Also, would it be reasonable to add command line options for selecting a single side of a Teledisk image, and also to limit the maximum track number? My motivation for asking these questions comes from trying to convert some HP-85/86/87 TeleDisk disk images which do appear to have the garbage sector issue I mentioned above. Plus some of these images were processed as doubled sided when only one side would actually be used, and/or process all possible 40 or 80 tracks when only 35 or 70 would actually be used in the original target environment. For example TD02IMD.COM chokes on this disk image: http://www.hpmuseum.net/software/WORDSR80.TD0 I believe the original disk here would only contain 16 valid 256-byte sectors per track, only one side of valid data, and only 70 valid tracks of data on the one valid side. ----------