On 12/10/2013 05:29 PM, Glen Slick wrote:
Dave's
TD02IMD.COM conversion utility fails with
an error if any track
on the disk contains sectors of unequal size, with the reason being
that a PC 765 floppy disk controller cannot format such tracks. (I'll
take Dave's word in his documents that is true).
For example, the SYSMASTA.TD0 and APPMASTR.TD0 files contained here
have this issue:
http://www.hpmuseum.net/software/SYSMASTA.zip
These Teledisk images have 16 256-byte sectors per track, sectors
0-15, plus one 128-byte sector per track, sector 17.
Well, yes and no. All sectors formatted using the 765 FORMAT command
are written as equal length, according to the length specified in the
command. However, any sort of garbage can be written as sector headers,
which are stored in a DMA buffer, 4 bytes per sector.
It's possible to adjust gaps so that up to 18 256 byte sectors can be
written on a DD track (cf. Televideo 800-series boxes do just that, as
do some of the Montezuma CP/M formats for the TRS-80 Model 4.
So, the trick is to format 17 256-byte sectors, but placing a 128-byte
length indicator in the last "spare" sector. Since the HP150 (Series 1)
does not appear to use the sector, no problem. However, since this
sector is MFM, most 765 clones will get into trouble when trying to
write meaningful data into it. There's a bug in the original NEC design
that transfers only 80 of the 128 bytes in a 128-byte MFM sector. But
fortunately, there are a few chips, such as the NSC DP8473 can write the
sector contents just fine. Reverse engineering at its finest.
From the HP150 samples that I have, it seems that no use is made of
this short sector. But you never know.
If you can find my old HP150.SYS DOS driver, you'll discover that it
formats (using the DOS FORMAT command) 16 256-byte sectors for 66
tracks--no extra 128-byte sector.
Bat to the question of it being possible to write 16+1 sector tracks,
sure, it's possible.
A cool gimmick of the FDC not paying attention to sector header
information when formatting can be exploited. Write a header that
specifies an 8K or 16K sector length, then actually write the sector.
The write causes the sector to "eat its tail" and wipe out any ID header
information in the process, essentially "wiping" the entire track.
--Chuck