Entry | |
---|---|
R1 | Reason code + Options |
R2 | Pointer to disc address |
R3 | Pointer to buffer (or scatter list) |
R4 | Length in bytes |
R5 | Pointer to alternative disc record |
R6 | Cache handle |
R8 | Pointer to Filecore instance private word |
Exit | |
---|---|
R1 | Preserved |
R2 | Preserved, disc address pointed to is updated to point to the next byte to be transferred |
R3 | Pointer to next buffer location to be transferred |
R4 | Number of bytes not transferred |
R5 | Preserved ? |
R6 | Preserved ? |
R8 | Preserved ? |
The purpose of this call is to provide a number of low-level disc operations using the more advanced Disc Operation DiscOp64.
# | Hex # | Action |
---|---|---|
0 | &00 | Verify? |
1 | &01 | Read sectors? |
2 | &02 | Write sectors? |
3 | &03 | Read track/ID? |
4 | &04 | Write/format track? |
5 | &05 | Seek? |
6 | &06 | Restore? |
7 | &07 | Step in? |
8 | &08 | Step out? |
9 | &09 | Read sectors via cache? |
15 | &0F | Specify Hard disc? |
Bit | Meaning |
---|---|
4 | Given alternative defect list |
5 | Given sector list |
6 | Ignore escape |
7 | Ignore timeout |
8 – 31 | Reserved, must be zero) |
The action performed depends on the reason code value in R1.
This call is just like FileCore_DiscOp except that it attacks a number of shortcomings in old versions of FileCore:
In the future, this will allow for up to 16 exbibytes (over 16 billion GB) per disc, and many more discs per filing system.
As high (top-bit set) addresses are possible in a scatter list, only negative numbers smaller or equal to than -64K (ie >= unsigned &FFFF0000) should be interpreted as the end of list marker.
This applies to any FileCore module for RISC OS 3.50 or later.