=> R1 = &69 (reason code)
R2 = pointer to buffer for format name
R3 = buffer length
R5 = pointer to disc record
R6 = sector cache handle
R8 = *pointer to* FileCore instance private word
If format unrecognised
<= R1-R5 preserved
R6 = new sector cache handle
R8 preserved
else
<= R1 = 0 (to claim)
R2 = filetype number for given disc
R5 = pointer to modified disc record
R6 = new sector cache handle
R8 preserved
This service is issued to identify a disc format. FileCore claims it for formats it recognises.
The identification procedure is involved:
1 (Unless any of the 4 values are zero) check the disc record's sector size, sectors per track, density and lowest sector ID number
Pass on the service if the sector scheme is unrecognised
2 Update the values in the disc record for disc size, sequence sizes, double step and heads.
3 Read the sector contents and check them - if it does not recognise these then pass on the service with R6 updated
4 Update the values in the disc record for disc cycle id and disc name
5 Fill the buffer in R2 with text suitable for the current format menu entry
6 (Finally) claim the service call.
See PRM 2, page 218
Sector size etc. zero
If any of sector size, sectors per track, density and lowest sector ID number are 0 then these were not supplied by FileCore_MiscOp 0 - this should only happen for hard discs.
Updating heads in the disc record
The heads field of the disc record should be updated in line with the sequence sides bit - if this bit becomes cleared add one to the heads, if this bit becomes set subtract one (but do not reduce heads below 0).
Reading the sector contents
The sector contents should be read with FileCore_DiscOp 9 with
R1 = flags 01x0 binary (1 second timeout, ignore escape, no alternative defect list)
pointer to the alternative disc record supplied
R2 = the disc address given by the root directory address on the disc record supplied
|
|
|