| 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) |
h4. Notes
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.