E format discs
- Don't need compacting
- Don't get map full errors
- Floppies can now also do defect skipping (was only winnies with old map)
as *format will map out any defects it finds
- Defects can mapped out without reformatting (both floppies and winnies)
using the command *defect <disc spec.> <disc add.>
New configuration commands
- *configure ADFSDirCache <size> [K]
- This reserves some space for ADFS to keep a cache of recently used
directories in a compressed form.
- *configure ADFSbuffers <buffers>
- This is used to reserve a number of 1K buffers which ADFS can use to speed
up BGET, BPUT and GBPB. They are used for write behind, read ahead and
caching of most recently used file buffers. If underused some of this space
can get temporarily transferred to the directory cache. It does not have an
optional K in the syntax since each buffer has a small overhead and hence
the space reserved is not an exact number of Kbytes.
*Verify
*Verify will now do up to 5 retries, and report where it retried.
Typical output
Verifying ...
0009A800 ?? Managed to verify sector after 2 retries
Disc error 08 at :0.000C5400 Failed to verify sector after 5 retries
Verify failed
Final message is one of
Verified ok
Verified with retries
Verify failed
Some discussion of soft and hard errors needed. This ties in with defects.
RAMFS
The module RAMFS provides a filing system RAM: which appears to the user
much the same as ADFS.
New adfs SWIs
- ADFS_Retries &40244
-
This can be used to read/write the retry word, the 4 bytes of which have the
following meaning.
byte meaning
0 number of retries for hard disc read/write sector
1 number of retries for floppy disc read/write sector
2 number of retries in floppy disc mount for each copy of map
3 number of retries for verify after *format before called a defect
On Entry:
- R0 bits to change
- R1 new bits
On Exit
- R0 preserved
- R1 masked by R0 = R1 AND R0
- R2 old value of retry word
- R3 new value of retry word = (old value BIC R0) EOR (R1 AND R0)
-
ADFS_DescribeDisc &40245
-
On Entry:
- R0 -> disc specifier string
- R1 -> 64 byte block to fill in as disc record
On Exit: The disc record is filled in as follows:
- 0 - log to base 2 of sector size
- 1 - sectors per track
- 2 - heads (1 for L format disc)
- 3 - density 1/2/4
- 4 - width of id field in bits
- 5 - log to base 2 of bytes for each map bit or 0 for old map
- 6 - track to track skew for random access files
- 7 - boot option
- 8 - reserved
- * 9 - number of zones in the map
- 10-11 - non map bits in zone
- 12-15 - system internal number of root directory
- 16-19 - disc size in bytes
- 20-21 - 2 byte disc id
- 22-31 - disc name
- 32-63 - reserved
Entries marked * refer to details of new map format
Attribute extension
New directory discs (ie all except L format) have extended attributes.
Bits 4-7 no longer repeat bits 0-3, but the only use ADFS makes of them
is to display bits 4 and 5 in *FileInfo
bit meaning
0 owner read access
1 owner write access
2 always zero
3 locked bit
4 public read access
5 public write access
6 reserved
7 reserved
Extension of up call protocol
UpCall_MediaNotPresent (1) and UpCall_MediaNotKnown (2) have had their
parameters extended as below to allow the Wimp to detect insertion of a
disc if a drive supports disc changed.
- R1 - filing system number
- R2 -> media name string or -1 if irrelevant
- R3 - device number or -1 if irrelevant
- R4 - iteration count 0,1,2,.. for repeated issuing of call
- R5 - minimum polling period in centiseconds for claiming upcall,
-1 if not to poll
- R6 -> media string eg. 'disc'
An up call handler for UpCall_MediaNotPresent and UpCall_MediaNotKnown can
still work in the simple way. That is on receipt of the upcall to interact
with the user to determine if he is able to insert the media. If he can then
the handler should claim the upcall, otherwise it should pass it on. The
up call will be repeatedly issued until the media is found or the up call not
claimed.
In order to spot automatically when the required media has been inserted. The
upcall handler should regularly claim the up call at intervals specifed by R5
allowing the filing system to search for the media. In order to allow the
up call handler to tidy up if a media is found in this way a new up call,
UpCall_MediaSearchEnd (4), has been added. This is issued whenever a media
search is ended, either because the media was found or the up call was not
claimed.
This up call handler must not issue calls that may cause the filing system to
be re-entered. Also programs designed to run under the desktop should not
handle these up_calls.