I would like to know more about the “Skip Factor” on CoCo disks. First, here’s what I know, please correct me if I’m wrong on anything. Basic’s DSKINI has an optional parameter allowing the user to format the disk using a specified skip factor.
The Skip factor tells the floppy controller where to find a sector on a given track. This was designed to allow an optimized access to sequential read. By default, Basic uses “4″ as Skip Factor.
A “track” is physically a ‘circle’ on the disk. This circle is divided into sectors.
To demonstrate this, let’s illustrate the physical sector on a track:
Physical sector (01 to 18, then it wraps around back to 01, etc..)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 (loop) 01 02 ..
When Basic finishes loading sector 01, by the time it has finished processing and gets ready to start reading sector 02, the disk has kept revolving so it is already on the middle of sector 03 or 04.
In order to read sector 02, the disk would have to complete almost a full spin and thus slowing down the read.
To this effect, the “logical sector” are interleaved, as I said for Basic the default skip is 4, so the layout might look like this:
01 10 06 15 02 11 07 16 03 12 08 17 04 13 09 18 05 14
This means that after reading sector 01, the disk will be somewhere over sector 06 or 15. Waiting for sector 02 is very short since it is almost the next one.
I read somewhere that OS-9 uses a skip factor of 2, since it performs faster than basic.
Now my questions:
- Is using a skip factor of ’2′ the fastest possible disk access, since using a skip factor of ’1′ would leave no time between sector reads?
- How does the disk controller *knows* what is the skip factor on a given disk?
- Since ‘DSKCON’ routines doesn’t know or care about skip factor, it means that Basic’s ‘DSKINI’ has some special low level access directly to the controller hardware?
- Will any ‘skip factor’ work? i.e.: it would only be less than optimal, but it should no cause problem for Basic?
- How can I experiment with custom Skip Factor using Rainbow IDE, which creates a CoCo DSK using “DECB DSKINI” internally during build?
- Can a program detect what is the Skip Factor on a disk?
- About disk read speed: since a track is physically a circle on the disk, it means that outer tracks are longer than inner tracks. And since track capacity remains constant, it must mean the data on the shortest track will read faster?
- ..and if it reads faster, then sector skip time will be much shorter, thus the skip factor must be set according to the fastest sectors?
I did some quick test but I didn’t notice any speed difference between tracks, I am wrong?
This post was submitted by remz.