h6. [[FileCore]] h6(. » [[FileCore SWI Calls|SWI Calls]] h6((. » FileCore_DiscOp64 h2. FileCore_DiscOp64 h5. (SWI &4054C) |_<^{width:4em}. Entry | | |<^. R1 |<^. "Reason code":#reason + "Options":#options| |<^. R2 |<^. Pointer to [[FileCore_DiscOp64 Address|disc address]]| |<^. R3 |<^. Pointer to buffer (or scatter list)| |<^. R4 |<^. Length in bytes| |<^. R5 |<^. Pointer to [[FileCore Disc Record Large|alternative disc record]]| |<^. R6 |<^. Cache handle| |<^. R8 |<^. Pointer to Filecore instance private word| |_<^{width:4em}. 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 ?| h4. Use The purpose of this call is to provide a number of low-level disc operations using the more advanced Disc Operation DiscOp64. h4(#reason). Reason Codes |_<^{width:4em}. #|_<^{width:4em}. Hex #|_<^. Action| |<^. 0|<^. &00|<^. [[FileCore_DiscOp64 0|Verify]]| |<^. 1|<^. &01|<^. [[FileCore_DiscOp64 1|Read sectors]]| |<^. 2|<^. &02|<^. [[FileCore_DiscOp64 2|Write sectors]]| |<^. 3|<^. &03|<^. [[FileCore_DiscOp64 3|Read track/ID]]| |<^. 4|<^. &04|<^. [[FileCore_DiscOp64 4|Write/format track]]| |<^. 5|<^. &05|<^. [[FileCore_DiscOp64 5|Seek]]| |<^. 6|<^. &06|<^. [[FileCore_DiscOp64 6|Restore]]| |<^. 7|<^. &07|<^. [[FileCore_DiscOp64 7|Step in]]| |<^. 8|<^. &08|<^. [[FileCore_DiscOp64 8|Step out]]| |<^. 9|<^. &09|<^. [[FileCore_DiscOp64 9|Read sectors via cache]]| |<^. 15|<^. &0F|<^. [[FileCore_DiscOp64 15|Specify Hard disc]]| h4(#options). Options |_<^{width:4em}. Bit |_<^. Meaning | |<^. 4 |<^. Given alternative defect list| |<^. 5 |<^. Given [[FileCore Sector List|sector list]]| |<^. 6 |<^. Ignore escape| |<^. 7 |<^. Ignore timeout| |<^. 8 - 31 |<^. Reserved, must be zero)| <br ./> 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: # Alternative disc record pointers passed in to various SWIs currently only have a 26-bit range so will not work in 32 bit systems. # [[FileCore_SectorDiscOp]] limits discs to 2^29 sectors, i.e. 256GB for drives with 512 byte sectors. 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. h4. See also * [[FileCore]] * [[FileCore Disc Record Large]] * [[FileCore Sector List]] * [[FileCore Error Numbers]] * [[FileCore_DiscOp64 Address]] * [[FileCore_SectorDiscOp]]